hibernate 在HQL中使用select插入和更新

vuktfyat  于 12个月前  发布在  其他
关注(0)|答案(1)|浏览(154)

选择插入

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

使用Select更新

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中编写相应的HQL吗?请更新。谢谢

nwlqm0z1

nwlqm0z11#

当你想在HQL中模拟INSERT ... SELECT时,你有两个选择:
Native SQL:您可以编写原生SQL查询(如您在问题中所做的那样)
HQL:在这种情况下,必须定义一个名为FIN_COA_POSTED的POJO类,并将其Map到数据库。
因此,您可以编写一个HQL选择查询来提取数据,将这些数据放在List<FIN_COA_POSTED>中,然后您可以在数据库中保存您的列表。
关于UPDATE语句,你可以写一个HQL查询,然后你可以使用executeUpdate()来执行你的UPDATE语句。
如果你愿意,你可以see here关于Hibernate的操作

相关问题