2016-02-11 91 views
0

我想用hibernate做一個簡單的SQL UPDATE查詢並將結果行映射到Hibernate實體(使用createSQLQuery)。UPDATE查詢返回Hibernate實體

她是一個片段:

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關鍵字)

謝謝!

回答

3

這是如何實現的:它採用「迴歸*」,並將其映射到使用.addEntity(User.class)實體

我希望它可以幫助別人

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

的關鍵點。 ..