我正在尝试使用 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/