gpt4 book ai didi

java hibernate - 找不到 beginTransaction 和 createQuery

转载 作者:行者123 更新时间:2023-11-29 04:17:57 25 4
gpt4 key购买 nike

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

这就是我开始 session 的方式

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 应该添加了所有必要的库,但我仍然收到错误

最佳答案

你必须改变这一行:

SessionFactory session = HibernateUtil.createSessionFactory();

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

因为 SessionFactory 接口(interface)没有实现包含两者的 SharedSessionContract 接口(interface)

getTransaction()
createQuery(String string)

Sessioninterface 那样的方法。

并且使用参数绑定(bind)而不是使用字符串连接是一种很好的做法。

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

关于java hibernate - 找不到 beginTransaction 和 createQuery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51092075/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com