2014-10-11 91 views
0

我想插入值到一個表的基礎上,我已經在其他表上的值。
例如,我們有2個表:
如何在Hibernate中的表中插入值到其他表中?

  1. 用戶(列:ID,USER_NAME,CURRENT_BALANCE)
  2. 歷史(列:ID,USER_ID,平衡)

所以插入記錄時到歷史表我想從用戶表中取出'current_balance'並插入值和歷史表。

這是我的插入語句代碼:

Query query = getSession().createSQLQuery("INSERT INTO History (user_id, balance) 
              VALUES (:userId, :balance)"); 
query.setParameter("userId", userIdValue); 
query.setParameter("balance", balanceValue)  
query.executeUpdate(); 

我所需要的,以便採取「CURRENT_BALANCE」從用戶表中Hibernate改變?

感謝

回答

1

嵌套SELECT查詢應該很好地工作:

Query query = getSession().createSQLQuery("INSERT INTO History (user_id, balance) 
              VALUES (:userId, (SELECT current_balance FROM Users WHERE id = :userId))"); 
query.setParameter("userId", userIdValue); 
query.executeUpdate(); 

這是修改過的例子(SQL)的版本。你提到你想通過HQL做到這一點?如果是這種情況,我不確定這是可能的,因爲HQL僅支持INSERT INTO ... SELECT而不支持INSERT INTO ... VALUES,請參閱this StackOverflow question

相關問題