我是 hibernate 初学者。 我在 PostgreSQL 中有一个带有 10 个参数的 void 函数(它是一个“创建或更新”函数),我想在我的应用程序中使用它。
我读到执行 native 查询是最简单的方法。
所以我写了这段代码:
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();
应用程序启动时没有任何错误,但是当我检查数据库时没有新记录。
有人可以解释一下出了什么问题吗?我应该对该函数做其他事情吗?
最佳答案
当我检查数据库时,我没有新的 rekord
当然,您不这样做,您正在执行 SELECT
,因此您没有在数据库中执行任何操作。
此外,为了执行查询,您不需要打开任何事务,因为您没有插入/更新/删除任何内容,并且您需要执行以下操作才能获取结果:
session.createNativeQuery(a).getResultList()
(如果您希望此查询产生多个结果)
session.createNativeQuery(a).getSingleResult()
(如果您只期望一个结果)。
session.createNativeQuery(a).executeUpdate()
如果您实际上要插入/更新/删除某些内容,在这种情况下,您将需要像在代码中那样进行事务。
关于java - Hibernate 5.2 native 查询与 void 函数 Postgresql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56007237/