Java Hibernate - не удается найти beginTransaction и createQuery - PullRequest
0 голосов
/ 29 июня 2018

У меня проблема с двумя методами гибернации, упомянутыми в заголовке, beginTransaction () и createQuery (). Ява дает мне не могу найти символ ошибки

Так я начинаю сеанс

import org.hibernate.SessionFactory;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;

public class HibernateUtil {
 private static SessionFactory sessionFactory;
private static ServiceRegistry serviceRegistry;

public static SessionFactory createSessionFactory() {
    Configuration configuration = new Configuration();
    configuration.configure();
    serviceRegistry = new StandardServiceRegistryBuilder().applySettings(
            configuration.getProperties()).build();
    sessionFactory = configuration.buildSessionFactory(serviceRegistry);
    return sessionFactory;
}


}

и вот как я использую два метода

SessionFactory session = HibernateUtil.createSessionFactory();
        Transaction tx = null;
        Users user = null;
        try {
            tx = session.beginTransaction();
            tx.begin();
            Query query = session.createQuery("FROM USERS WHERE USERNAME='"+userId+"'");
            user = (Users)query.uniqueResult();
            tx.commit();
        }

Я довольно незнаком с гибернацией и не понимаю, почему это происходит. Я правильно настроил свой XML-файл конфигурации. Netbeans предположительно добавил все необходимые библиотеки, и я все еще получаю ошибку

1 Ответ

0 голосов
/ 29 июня 2018

Вы должны изменить эту строку:

SessionFactory session = HibernateUtil.createSessionFactory();

до

Session session = HibernateUtil.createSessionFactory().openSession();

Поскольку интерфейс SessionFactory не реализует интерфейс SharedSessionContract, который включает в себя оба

getTransaction()
createQuery(String string)

методы, такие как Session interface делает.

И хорошей практикой является использование привязки параметров вместо конкатенации строк.

Query query = session.createQuery("FROM USERS WHERE USERNAME= :userName")
              .setParameter("userName",userId);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...