3

QueryDSL(SpringDataと統合)を使用してJPAエンティティをクエリするために、QueryDSLで生成されたエンティティEntitySerializerを使用しています。

クライアントからプロパティ名を受け取っていますが、追加の述語に追加(AND)できるプロパティの述語を作成したいと思います。

プロパティ名と一致する述語/パスをEntitySerializerから取得する方法がわかりません。たとえば、フィルタリングしたい(最後に汎用メソッドを作成したい)「name」プロパティを持つPersonエンティティ(自動生成されたQPersonクラスを持つ)があるとします。一般的な方法は次のとおりです。

Public Predicat getPredicatByPropertyName(String propertyName)  {
      QPerson p = QPerson.person;
      person.getPredicat(“propertyName”).like(“tom”);
}
4

2 に答える 2

5

文字列型のプロパティを作成するには、次のスニペットを使用するだけです

new StringPath(p, propertyName)

次に、このように使用して述語インスタンスを作成できます

new StringPath(p, propertyName).like("tom")
于 2012-11-15T07:31:14.010 に答える
4

ティモが言ったように簡単には機能しなかったので、私はそれを少し異なってしました、ここにそれがあります:

query.from(play);
query.where( Expressions.stringPath(play, "name").eq("New play") );

私はそれを別々に行うことによっても達成できることを知っています:

StringPath column = Expressions.stringPath(play, "name");

query.from(play);
query.where( column.eq("New play") );
于 2015-12-17T16:44:19.487 に答える