将一个简单的查询转换为hibernate

时间:2013-08-27 05:57:13

标签: java hibernate subquery hql

我想将一个简单的查询转换为hibernate

INSERT INTO TRXENTRIES (AMOUNT, BALANCE) 
VALUES (2500, (SELECT CURRENTBALANCE FROM CUSTOMER WHERE CUSTOMERID=1)+2500))

什么是使用save()的hibernate中的替代解决方案?

更新我!

1 个答案:

答案 0 :(得分:0)

你必须:

  1. 创建一个实体以映射您的INSERT表(即TrxEntry)
  2. 编写HQL查询以填充对象
  3. 使用session.merge()
  4. 保存实体

    或者,您可以使用会话对象的createSqlQuery方法来执行SQL查询,并使用session.executeUpdate()完成它们。

    样品:

    实体TrxEntry:

    public class TrxEntry {
        private Double amount;
        private Double balance;
    
        -- add your get / set properties
    
        public Trxentry (Double amount, Double balance) {
            this.amount = amount;
            this.balance = balance;
        }
    }
    

    HQL:

    String hql = "select new TrxEntry(o.amount, o.balance)
    from otherEntry o";
    

    如果你想将你的o.balance计算为另一个子查询,你可以毫无问题地进行

    您的查询结果是

    Query q = session.createQuery(hql);
    session.merge(q);
    

    合并提供保存您的实体