Java 将简单查询转换为hibernate
我想将一个简单的查询转换为hibernateJava 将简单查询转换为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()保存实体 或者,您可以使用会话
INSERT INTO TRXENTRIES (AMOUNT, BALANCE)
VALUES (2500, (SELECT CURRENTBALANCE FROM CUSTOMER WHERE CUSTOMERID=1)+2500))
在hibernate中使用save()的替代解决方案是什么
更新我 您必须:
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);