1

State という列挙型フィールドを保持する基本エンティティがあります。

public enum State {

    DELETED(0),
    ACTIVE(1)
    ;

    private int value;

    private State(int value) {
        this.value = value;
    }

    public int getValue() {
        return this.value;
    }

}

状態フィールドが「ACTIVE」であるエンティティのみを取得するために、生成されたクエリの where 句を設定する JPA 注釈付きの方法はありますか?
その理由は、エンティティ「B」のリストを保持するエンティティ「A」がある場合、DB から「A」のインスタンスを取得して初期化するときに、「B」のリストにState が「ACTIVE」であるエンティティ

4

4 に答える 4

0

JPAにはフィルターや注釈がなく、注釈を使用してコレクションエンティティーをフィルター処理する方法はありません。

Aエンティティを取得し、アクティブなBエンティティのみを取得することをお勧めします。

于 2012-10-17T11:08:36.070 に答える
0

JPA でこれを行う標準的な方法はありません。

1 つの方法として、テーブルをフィルター処理するビューを作成し、テーブルではなくビューにマップすることが考えられます。

EclipseLink を使用している場合は、@AdditionalCriteria を使用できます

http://www.eclipse.org/eclipselink/documentation/2.4/jpa/extensions/a_additionalcriteria.htm#additionalcriteria

于 2012-10-17T14:13:44.143 に答える
0

データベースビューでこれを行うことをお勧めします。論理的に削除されたエンティティを含むすべてのエンティティを含む基になるテーブルにアクセスし、削除されていないエンティティのビューにアクセスします

于 2015-01-06T00:31:57.843 に答える
-1

@Filterとして使用

 @Filter(name, condition)

または@Whereとして

 @where(state = STATE.ACTIVE.getValue())
于 2012-10-16T18:36:11.777 に答える