我在标题中提到的两个休眠方法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应该添加了所有必需的库,但我仍然收到错误

最佳答案

您必须更改此行:

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);

09-11 20:28