java - 在 HQL 上使用 select 进行内部连接

标签 java hibernate hql

我想用 HQL 做类似的事情:

SELECT *
FROM tableA a
INNER JOIN (select fieldA, sum(fieldB) as sum from tableB) b
ON a.fieldA = b.fieldA and a.fieldC = b.sum;

但这给出了一个错误:

org.hibernate.hql.internal.ast.QuerySyntaxException: unexpected token: (...

有什么方法可以使用 HQL 和 Hibernate 来实现吗?

最佳答案

尝试原生SQL解决方法:

需要先导入:

import org.hibernate.SQLQuery;

然后在你的代码中的某处:

SQLQuery query = session.createSQLQuery(
    "SELECT * FROM tableA a
    INNER JOIN 
    (SELECT fieldA, sum(fieldB) as sum from tableB) b
    ON a.fieldA = b.fieldA and a.fieldC = b.sum"
);

more on this link
<强> and HERE ( Joins in Hibernate Query Language)

关于java - 在 HQL 上使用 select 进行内部连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11776932/

相关文章:

java - HQL 查询减去一些特定字段

java - 在 Hibernate 中批量删除时查询语法错误

java - hibernate 和 JPA : how to make a foreign key constraint on a String

java - Substance 6.1 升级提供了当 Substance 不是当前 LAF 异常时使用的 Substance 委托(delegate)

java - 此类代码中是否存在线程安全错误?

java - 使用单个logging.properties记录到不同的文件

hibernate - 中止由 @Transactional 创建的事务但正确返回(不抛出异常)

oracle - java.sql.SQLException : No suitable driver when running tests through spring roo

java - 格式化 hql 查询

java - 为什么 javac 编译器找不到 javafx.collections 但我正在使用它?