Java Hibernate-无法找到beginTransaction和createQuery

时间:2018-06-28 22:41:23

标签: java hibernate

标题中提到的两个休眠方法beginTransaction()和createQuery()我遇到了问题。 Java给了我找不到符号错误

这就是我开始会议的方式

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 :(得分:3)

您必须更改此行:

SessionFactory session = HibernateUtil.createSessionFactory();

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

因为SessionFactory接口未实现同时包含

SharedSessionContract接口
getTransaction()
createQuery(String string)

类似于Session接口的方法。

并且优良作法是使用参数绑定而不是使用字符串串联。

Query query = session.createQuery("FROM USERS WHERE USERNAME= :userName")
              .setParameter("userName",userId);