在UPDATE查询中返回Hibernate实体

Shv*_*alb 2 java postgresql hibernate

我正在尝试使用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();
Run Code Online (Sandbox Code Playgroud)

这将引发异常:

org.hibernate.exception.GenericJDBCException: could not extract ResultSet
Run Code Online (Sandbox Code Playgroud)

原因:

org.postgresql.util.PSQLException: No results were returned by the query.
Run Code Online (Sandbox Code Playgroud)

我该如何进行这项工作?(使用RETURNING关键字)

Shv*_*alb 5

这是实现它的方法:

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();
Run Code Online (Sandbox Code Playgroud)

该键使用“ RETURNING *”将其指向,并使用.addEntity(User.class)将其映射到实体

我希望它可以帮助某人...