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

标签 java hibernate subquery hql

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

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

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

更新我!

最佳答案

你必须:

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

或者,您可以使用 session 对象的方法 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;
    }
}

总部:

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

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

你查询的结果进去了

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

合并提供以保存您的实体

关于java - 将一个简单的查询转换为 hibernate ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18457999/

相关文章:

java - Postgres 中的 NamedParameterJdbcTemplate 和 JSON

java - 避免 JNI C 与 Java 之间的内存泄漏

java - 将 Gradle 项目导入 IntelliJ IDEA 时如何避免重复库

nhibernate - 如何使用hql匹配所有 child

java - 暂时跳过 hibernate 验证

sql - 根据变量使用不同的子查询

MySQL 子选择多个条件

sql - 无法执行sql查询

java - 比较数据 vector

mysql - 具有反向引用的 Hibernate @OneToOne 映射和所有者的 CascadeType.ALL 不会保留子项