我遇到了标题中提到的两个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();
}
我对hibernate相当不熟悉,也不明白为什么会发生这种情况。我正确地设置了xml配置文件。Netbeans理应添加了所有必需的库,但我仍然收到错误
发布于 2018-06-29 06:54:26
您必须更改此行:
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);
https://stackoverflow.com/questions/51092075
复制相似问题