Java 将简单查询转换为hibernate

Java 将简单查询转换为hibernate,java,hibernate,subquery,hql,Java,Hibernate,Subquery,Hql,我想将一个简单的查询转换为hibernate INSERT INTO TRXENTRIES (AMOUNT, BALANCE) VALUES (2500, (SELECT CURRENTBALANCE FROM CUSTOMER WHERE CUSTOMERID=1)+2500)) 在hibernate中使用save()的替代解决方案是什么 更新我 您必须: 创建实体以映射插入表(即TrxEntry) 编写HQL查询以填充对象 使用session.merge()保存实体 或者,您可以使用会话

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

INSERT INTO TRXENTRIES (AMOUNT, BALANCE) 
VALUES (2500, (SELECT CURRENTBALANCE FROM CUSTOMER WHERE CUSTOMERID=1)+2500))
在hibernate中使用save()的替代解决方案是什么

更新我

您必须:

  • 创建实体以映射插入表(即TrxEntry)
  • 编写HQL查询以填充对象
  • 使用session.merge()保存实体
  • 或者,您可以使用会话对象的方法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:

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

    您的查询结果进入

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

    合并提供了保存实体的功能

    查看此链接这将有助于将此答案视为well@ankit是否可以使用
    session.save(entity)
    ,因为这对于一个表来说是可以的,但在我的例子中,与表有一对多的关系,所以save()返回ID(生成的值),但query不返回@ankit我只需要其他表格中的一个值!您的示例从其他表中获取所有值!:(
    在HQL中,只支持插入到…选择…中;不支持插入到…值中。HQL只支持从另一个表中插入。
    因此sql查询概念不适用于我的情况,我只需要从另一个表中插入一个值!如果您提供有关
    会话.merge()的示例,我将不胜感激。)
    session.save()
    :)您好,在这里显示:亲爱的差异我知道!我需要保存实体,这个实体包含另一个表中的一个值@Shahid Ghafoor:亲爱的,解决方案在第1点。当您编写实体时。BALANCE是一个标量属性,因此,如果编写HQL查询,则使用IStantate构造函数填充该属性
    Query q = session.createQuery(hql);
    session.merge(q);