在Hibernate中使用本机查询进行内部联接

斯里尼瓦斯

我有一个表“ questions”,其中包含字段ID,版本以及其他字段。一个问题可以有多个具有相同ID和不同版本的记录。我需要为每个问题的最高版本选择问题记录。

我的SQL查询是

select * from questions v1 inner join 
    (select id, max(version) as highest_version from 
        questions group by id
     )as v2 on v1.id = v2.id and v1.version = v2.highest_version;

此查询可从Sequel pro进行。但是我需要从Java运行此程序,而我正在使用休眠模式。

我的Java代码是:

String assertQuestionQuery = "select v1 from Question v1 inner join "
        + "(select t.id, max(t.version) as highest_version "
        + "from Question t "
        + "group by t.id) "
        + "as v2 on v1.id =  v2.id and v1.version = v2.highest_version";

Query q = sourceEm.createQuery(assertQuestionQuery, Question.class);
List<Question> questionVersions = q.getResultList();

我收到以下错误:

ERROR org.hibernate.hql.internal.ast.ErrorCounter line 1:87: unexpected token: ( 

如果删除括号,则会出现以下错误:

ERROR org.hibernate.hql.internal.ast.ErrorCounter line 1:87: unexpected token: select
Madhusudana Reddy Sunnapu

请尝试以下更改。

  • 使用createNativeQuery(..)代替createQuery(..)
  • 更新查询以使用select v1.* from...而不是select v1 from...

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在存储库中使用Spring Boot JPA / Hibernate进行内部联接?

使用JpaRepository进行内部联接而无需编写查询

使用子查询与派生表进行内部联接

是否使用Objection JS进行内部联接查询?

在Oracle SQL中使用Sum进行内部联接

使用Lambda(LINQ)进行内部联接

使用Python从SQL Server和Oracle进行内部联接查询

如何在AppInsights上使用Kusto查询语言进行内部联接

Android:如何使用ContextResolver在sqlite中进行内部联接查询?

如何在MySQL中使用两个条件进行内部联接

SQL:使用XML作为输入进行内部联接

如何使用linq进行内部联接,分组和计数

如何使用伪值对表进行内部联接

使用三个表进行内部联接

如何使用三个表进行内部联接?

使用条件在python pandas中进行内部联接

SQL在左联接中使用内部查询

在MySQL中进行内部联接选择

在mysql PHP中进行内部联接

在SQL多行上进行内部联接

在MySQL中进行内部联接

如何通过使用填充或在mongodb中使用聚合进行内部查询来使用填充功能

使用SQL在Access中的5个表上进行内部联接和左联接

htaccess使用查询参数对URL进行内部重写

如何在给定查询中使用内部联接并对其进行优化?

编写linq similiar,在其中使用SQL查询中的内部联接从中进行选择

如何使用表达式树进行内部联接(对嵌套属性进行过滤)?

MongoDB \ Driver php如何在第一个集合中使用过滤器进行内部联接

C#LINQ进行内部查询