0

是否有机会通过似乎只是一个 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并指定分页参数以获取具有固定大小的结果集。但是我想做一些额外的复杂过滤,不能用查询来表达。如果我制作一些后查询处理功能并使用它来过滤查询结果,我会破坏分页不变量,页面大小。这不会很好和方便。

4

2 回答 2

0

没有简单的方法可以做到这一点。setFirstResult()setMaxResults()方法应用于生成的 SQL 查询。例如,在 MySQL 中,LIMIT (10, 10)被添加到查询的 where 子句中)。因此,如果您在执行查询后过滤结果,您将始终获得较少数量的结果。

于 2012-05-04T11:10:10.183 回答
0

NamedQueries 是实现这一目标的错误方法。

您需要即时构建查询。

EntityManager em=....
Query queryObject = em.createQuery(queryString);

或者

Query queryObject = em.createNativeQuery(queryString);
于 2012-05-04T11:18:16.697 回答