在HQL中使用select插入和更新

时间:2016-07-13 09:35:42

标签: sql hibernate hql

使用选择

插入
INSERT INTO FIN_COA_POSTED (DEBIT_AMOUNT,CREDIT_AMOUNT)
SELECT DEBIT_AMOUNT+__amount,CREDIT_AMOUNT FROM FIN_COA_POSTED WHERE  
ID =(SELECT MAX(ID)  FROM FIN_COA_POSTED WHERE FK_CHART_OF_ACCOUNT=5);

使用选择

进行更新
UPDATE fin_bank_account AS t1 JOIN 
(SELECT ID, BALANCE+__amount AS totalamount FROM fin_bank_account WHERE     
ID=7) 
AS t2 ON t1.id =t2.id 
SET  t1.balance =t2.totalamount;

注意

( IN __amount DOUBLE)

我们能在hiberante中写出corospondance HQL吗?更新plz。感谢

1 个答案:

答案 0 :(得分:0)

当您想在HQL中模拟I NSERT ... SELECT时,请选择两种不同的方式:

Native SQL:您可以编写本机SQL查询(正如您在问题中所做的那样)

HQL:在这种情况下,您必须定义一个名为FIN_COA_POSTED的POJO类,并将其映射到您的数据库。

因此,您可以编写HQL选择查询来提取数据,将此数据放在List<FIN_COA_POSTED>中,然后您可以在数据库中保存列表。

关于UPDATE语句,您可以编写HQL查询,然后可以使用executeUpdate()来执行UPDATE语句。

如果您希望可以see here关于使用Hibernate进行操作