是否有机会按照似乎只是java函数的复杂自定义条件筛选查询结果?我希望这个标准函数在实体创建和将其放入结果集合之间起作用。 例如,我有以下实体和查询
@Entity
@NamedQueries{
@NamedQuery(name="myquery",query="...")
}
class MyEntity{
@Id
public long id;
@Column(name="NAME")
public String name;
@Column(name="description")
public String description;
}
我可以执行myquery
并指定分页参数以获得固定大小的结果集。但我想进行一些额外的复杂过滤,这些过滤无法通过查询来表达。如果我做一些帖子查询处理功能并用它来过滤查询结果,我会打破分页不变,页面大小。这不会很好,也不方便。
答案 0 :(得分:0)
没有简单的方法可以做到这一点。 setFirstResult()
和setMaxResults()
方法应用于生成的SQL查询。例如,在MySQL中,LIMIT (10, 10)
被添加到查询的where子句中。因此,如果在执行查询后过滤结果,您将始终获得较少数量的结果。
答案 1 :(得分:0)
NamedQueries是实现此目的的错误方法。
您需要动态构建查询。
EntityManager em=....
Query queryObject = em.createQuery(queryString);
或
Query queryObject = em.createNativeQuery(queryString);