java - Hibernate 5.2 native 查询与 void 函数 Postgresql

标签 java hibernate nativequery

我是 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/

相关文章:

java - struts2 Action - 多个方法和多个类

java - sessionfactory创建第一次需要花费大量时间加载

用于计数的 JPA 自定义 @Query !boolean

java - 在实体对象中将 native SQL 与默认 Hibernate 行为混合?

java - 检测窗口事件

java - 数据结构使用

java - 如何对所有页面使用一个参数并使用页面对象模型模式(Webdriver + Java + JUnit)进行测试?

java - Spring Boot + Hibernate 未对多个数据源使用正确的方言

java - 当前 session 在捕获异常后无效,但我必须进行更多查询

Symfony2 Doctrine2 原生查询基础