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

Hibernate 5.2 Native Query with void function Postgresql

我是 hibernate 的初学者。 我在 PostgreSQL 中有一个带有 10 个参数的 void 函数(它是一个 "create or update" 函数),我想在我的应用程序中使用它。

我读到做原生查询是最简单的方法。

所以我写了这段代码:

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();

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

谁能解释一下哪里出了问题?我应该对该功能做些其他事情吗?

When I check database I don't have new rekord Ofc 你不这样做,你正在做 SELECT,所以你没有在你的数据库中做任何事情。

此外,为了执行您的查询,您不需要打开任何交易,因为您 inserting/updating/deleting 什么都不是,您需要执行以下操作以获得结果:

session.createNativeQuery(a).getResultList() 如果您希望从该查询中获得多个结果

session.createNativeQuery(a).getSingleResult() 如果您希望只有一个结果。

session.createNativeQuery(a).executeUpdate() 如果您实际上是 inserting/updating/deleting 某物,在这种情况下,您将需要像在代码中那样进行交易。

当您调用 session.createNativeQuery(a) 时,它会创建一个查询,但在您调用本机查询的 executeUpdate() 方法之前不会执行它。