我是休眠的初学者。 我在PostgreSQL中有一个带10个参数的void函数(这是一个“创建或更新”函数),我想在我的应用程序中使用它。
我读到,执行本机查询是最简单的方法。
所以我写了这段代码:
Session session = HibernateUtil.getSessionFactory().openSession();
session.beginTransaction();
String a = "SELECT fun('text', 'text', 12345678987, 'text', 'text', 50, 37500, 133456788, 'text', 2);
session.createNativeQuery(a);
session.getTransaction().commit();
session.close();
应用程序启动时没有任何错误,但是当我检查数据库时,我没有新记录。
有人可以解释出什么问题吗?我应该使用该功能吗?
答案 0 :(得分:0)
When I check database I don't have new rekord
您没有这样做,您正在做SELECT
,因此您在数据库中什么也没做。
为了执行查询,您不需要打开任何事务,因为您没有插入/更新/删除任何东西,因此需要执行以下操作来获得结果:
session.createNativeQuery(a).getResultList()
,如果您希望此查询有多个结果
session.createNativeQuery(a).getSingleResult()
,如果您只希望得到一个结果。
session.createNativeQuery(a).executeUpdate()
,如果您实际上是在插入/更新/删除某些内容,在这种情况下,您将需要像在代码中一样进行事务处理。
答案 1 :(得分:0)
当您调用session.createNativeQuery(a)
时,它将创建一个查询,但是直到您调用本机查询的executeUpdate()
方法时,它才会执行。