如何根据Hibernate中的另一个表向表插入值?

时间:2014-10-11 09:59:03

标签: hibernate

我想根据我在其他表上的值将值插入一个表。
例如,我们有2个表:

  1. 用户(列:id,user_name,current_balance)
  2. 历史记录(列:id,user_id,余额)
  3. 因此,当将记录插入History表时,我想从Users表中获取'current_balance'并插入值和History表。

    这是我的插入语句代码:

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

    为了从Hibernate中的Users表中获取'current_balance',我需要更改哪些内容?

    感谢

1 个答案:

答案 0 :(得分: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