我有一个要求,我需要限制从特定标志的表返回的记录数和其他标志值的所有记录。
例如:contact-history
表有一个名为IorM_flg
的元素,可能的值为'm'和'o'。
我只需要返回10条'o'记录和'm'的所有记录。
我打算用union为这个写一个查询。像这样:
select ch from contact_history where ch.rownum <= 10 and ch.IorM_flg = 'o'
Union All
select ch from contact_history where ch.IorM_flg != 'o'
这可能吗? 请注意,它是一个JPA查询。 (contact_history是对象名称)
欢迎任何其他更好的建议!
答案 0 :(得分:2)
JPA不支持UNION,但如果使用EclipseLink,则JPQL支持UNION。此外,COLUMN运算符可用于访问rownum等特殊列。
请参阅, http://java-persistence-performance.blogspot.com/2012/05/jpql-vs-sql-have-both-with-eclipselink.html
答案 1 :(得分:1)
不,这对JPQL来说是不可能的,因为它没有UNION(ALL)。此外,无法使用rownum限制查询字符串本身返回的行数,但这可以通过setMaxResults完成。
在许多情况下
是可行的解决方案。