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