java - 在 UPDATE 查询上返回 Hibernate 实体

标签 java hibernate postgresql

我正在尝试使用 hibernate 进行简单的 SQL UPDATE 查询并将结果行映射到 Hibernate 实体(使用 createSQLQuery)。

String updateQuery = 
        String.format("UPDATE \"user\" "
                + "SET chips_balance=chips_balance + %d, diamonds_balance=diamonds_balance + %d "
                + "WHERE id=%d", chips_delta, diamonds_delta, userId); 

        User user = (User)session.createSQLQuery(updateQuery).uniqueResult();

这会抛出异常:

org.hibernate.exception.GenericJDBCException: could not extract ResultSet

原因:

org.postgresql.util.PSQLException: No results were returned by the query.

我怎样才能使这项工作? (使用 RETURNING 关键字)

最佳答案

实现方法如下:

String updateQuery = 
        String.format(  "UPDATE \"user\" "
            +       "SET chips_balance=chips_balance + %d, diamonds_balance=diamonds_balance + %d "
            +       "WHERE id=%d "
            +       "RETURNING *", 100, 5, 64); 
            
User user = (User) session.createSQLQuery(updateQuery)
        .addEntity(User.class)
        .uniqueResult();
        

这里的关键点是使用“RETURNING *”并使用.addEntity(User.class) 将其映射到实体

关于java - 在 UPDATE 查询上返回 Hibernate 实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35348489/

相关文章:

java - jdbi:将@MapResultAsBean 注释与 CustomMapperFactory 一起使用

ruby-on-rails - 在 Rails 中,如何创建将更改主键类型的迁移?

postgresql - 当我在 PostgreSQL 中使用\d+ TABLE 命令时,输出换行

java - Selenium Webdriver java : click on a checkbox

Java Hibernate sql server Express 连接错误

java - 从 Java 中的 Amazon Access Key 获取用户名

java - hibernate-spatial jpa 距离查询

java - 如何使用@DateTimeFormat在Spring表单中绑定(bind)日期字段?

java - Android - 在java中仅获取列中具有值的行

java - Hibernate - XML 中的可重用组件定义?