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

それを行う簡単な方法はありません。およびメソッドは、生成されたSQLクエリに適用されますsetFirstResult()setMaxResults()たとえば、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 に答える