簡體   English   中英

在UPDATE查詢中返回Hibernate實體

[英]Return Hibernate entity on UPDATE query

我正在嘗試使用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)將其映射到實體

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM