我有一個表「問題」,其中包含字段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;
該查詢將從續集專業工作。但我需要從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
@srinivas。 'createNativeQuery'而不是'createQuery'並更新查詢,使用'select v1。* from'而不是'select v1 from' –
@MadhusudanaReddySunnapu謝謝!!那工作。 – srinivas
很高興幫助。 –