Uczę się springa security i jestem na etapie rejestracji i logowania uzytkownika z pomocą Hibernate i bazy MySQL.W bazie mam tabele " users" (pola username i password) a także " authorities"(username,i authority).To co umiałem do tej pory czyli zapisywanie do jednej tabeli za pomocą "saveOrUpdate" działa OK.Z tym że żeby zarejestrowany użytkownik mógł się zalogować musi się znaleźć też w tabeli authorities(do której nie mam zrobionej klasy Entity), no więc wymyśliłem że przy zapisywaniu obiektu utworze zapytanie które go tam wsadzi.
Wklejam klase z metodą stanowiącą problem
package com.offersapp.dao;
import javax.persistence.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
import com.offersapp.domain.User;
@Repository
public class UsersDaoImpl implements UsersDao {
@Autowired
private SessionFactory sessionFactory;
@Override
public void saveUser(User user) {
Session session = sessionFactory.getCurrentSession();
session.saveOrUpdate(user);
Query query = session.createQuery("insert into authorities (username,authority) values(:val1,:val2)");
query.setParameter("val1", user.getUsername());
query.setParameter("val2", "user");
query.executeUpdate();
}
}
Dostaje taki exception,
Swoją drogą gdzie tego szukać: "line 1 column 46",bo nie wiem jak to czytać?
SEVERE: Servlet.service() for servlet [DispatcherServlet] in context with path [/OffersApp] threw exception [Request processing failed; nested exception is java.lang.IllegalArgumentException: org.hibernate.hql.internal.ast.QuerySyntaxException: unexpected token: values near line 1, column 46 [insert into authorities (username,authority) values(:val1,:val2)]] with root cause
org.hibernate.hql.internal.ast.QuerySyntaxException: unexpected token: values near line 1, column 46 [insert into authorities (username,authority) values(:val1,:val2)]