我在标题中提到的两个休眠方法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);