我有以下实体:
@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 () {
}
// ...
}
发布于 2013-06-20 00:21:05
请尝试添加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
和simple Group
设置映射。
发布于 2013-06-20 22:15:19
您需要在代码中使用DescriptorCustomizer并将表达式添加到映射中,
http://wiki.eclipse.org/EclipseLink/Examples/JPA/MappingSelectionCriteria
发布于 2016-03-16 13:14:55
@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;
https://stackoverflow.com/questions/17192639
复制相似问题