我有以下实体:
@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 () {
}
// ...
}
答案 0 :(得分:4)
请尝试添加Hibernate's
@Filter 注释。我不知道整个架构,但它可能是:
@ManyToOne
@JoinColumn(name = "group_code", referencedColumnName = "code")
@Filter(name="parentGroup",condition="parent_group IS NULL")
private Group group;
如果EclipseLink
,解决方案可能是单独的ParentGroup
实体。然后,您可以使用 @AdditionalCriteria 注释对其进行标记,并使用User
和简单Group
设置映射。
答案 1 :(得分:1)
您需要使用DescriptorCustomizer并将代码添加到代码中的映射
http://wiki.eclipse.org/EclipseLink/Examples/JPA/MappingSelectionCriteria
答案 2 :(得分: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;