6

次のエンティティがあります。

@Entity
public class User {
    @ManyToOne
    @JoinColumn(name = "group_code", referencedColumnName = "code")
    private Group group;

    public User () {
    }

    // ...
}

上記の結合関係に追加の条件を指定することは何とか可能ですか? Groupは階層的であり、User常に親グループを参照する必要があるため、追加の条件は になりますparent_group == NULLcodeそれ自体は一意ではないことに注意してください。

グループは次のとおりです。

@Entity
public class Group {
    // ...

    @ManyToOne
    @JoinColumn(name = "parent_package_code")
    private Group parent;

    public Group () {
    }

    // ...
}
4

3 に答える 3

4

Hibernate's @Filterアノテーションを追加してみてください。スキーマ全体を認識していませんが、次の可能性があります。

@ManyToOne
@JoinColumn(name = "group_code", referencedColumnName = "code")
@Filter(name="parentGroup",condition="parent_group IS NULL") 
private Group group;

解決策の場合、別のエンティティEclipseLinkを持つことができます。ParentGroup次に、@AdditionalCriteriaUserアノテーションでマークし、シンプルなマッピングを設定できますGroup

于 2013-06-19T16:21:05.003 に答える
1

DescriptorCustomizer を使用し、コードでマッピングに Expression を追加する必要があります。

http://wiki.eclipse.org/EclipseLink/Examples/JPA/MappingSelectionCriteria

于 2013-06-20T14:15:18.807 に答える