具有void函数Postgresql的Hibernate 5.2本机查询

时间:2019-05-06 14:29:55

标签: java hibernate nativequery

我是休眠的初学者。 我在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();

应用程序启动时没有任何错误,但是当我检查数据库时,我没有新记录。

有人可以解释出什么问题吗?我应该使用该功能吗?

2 个答案:

答案 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()方法时,它才会执行。