6

我有以下实体:

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

    public User () {
    }

    // ...
}

是否有可能以某种方式为上述连接关系指定附加条件?Group是分层User的,应始终引用父组,因此附加条件为parent_group == NULL. 请注意,code它本身并不是唯一的。

这是组:

@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注释标记它并使用和 simple设置映射Group

于 2013-06-19T16:21:05.003 回答
1

您需要使用 DescriptorCustomizer 并将 Expression 添加到代码中的映射中,

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

于 2013-06-20T14:15:18.807 回答
0

@Filter属性不适用于单个实体,它适用于集合

试试这样

@OneToMany(targetEntity = DefaultPortFloatingAddress.class)
    @JoinTable(name="JCI_PORT_FLOATING_ADDRESS",joinColumns = {@JoinColumn(name="FLOATING_IP_ID", referencedColumnName = "floatingip_id")}, inverseJoinColumns = {@JoinColumn(name="PORT_FLOATING_ADDRESS_ID")})
    //@Where(clause="status='A'")
    @Filter(name="status", condition="A")
    private List<PortFloatingAddress> listPortFloatingAddress;
于 2016-03-16T05:14:54.533 回答