我在使用Hibernate时遇到了一个小问题。我有两张桌子:“服务”和SERVICE_RELATIONSHIP定义两个服务之间的关系。
CREATE TABLE TMS.TB_SERVICE (
ID_SERVICE INTEGER NOT NULL,
NAME VARCHAR(255),
)
CREATE TABLE SERVICE_RELATIONSHIP (
ID_SERVICE INTEGER NOT NULL,
ID_SERVICE_REL INTEGER NOT NULL,
RELATIONSHIP VARCHAR(1) // Could be 'E' (Exclude) or 'I' (Include)
)
我使用不同的方法(getInclude和getExclude)来获取服务,具体取决于它们的关系类型。他们工作得很完美,唯一的问题是我想坚持服务,ID_SERVICE& ID_SERVICE_REL列正确插入但不是RELATIONSHIP 。
@Table(name="SERVICE")
public class Service implements Serializable {
private String name;
private Integer id;
private Collection<Service> exclude;
private Collection<Service> include;
[..]
@JoinTable(name = "SERVICE_RELATIONSHIP",
joinColumns = {
@JoinColumn(name="ID_SERVICE", unique = false, updatable = true)
},
inverseJoinColumns = {
@JoinColumn(name="ID_SERVICE_REL")
}
)
@WhereJoinTable(clause = "RELATIONSHIP='E'")
public Collection<Service> getExclude() {
return exclude;
}
[..]
@OneToMany(fetch=FetchType.EAGER)
@JoinTable(name = "SERVICE_RELATIONSHIP",
joinColumns = {
@JoinColumn(name="ID_SERVICE", unique = false, updatable = true)
},
inverseJoinColumns = {
@JoinColumn(name="ID_SERVICE_REL")
}
)
@WhereJoinTable(clause = "RELATIONSHIP='I'")
public Collection<Service> getInclude() {
return include;
}
}
有什么想法吗? 提前致谢
答案 0 :(得分:0)
@WhereJoinTable
仅用于在select子句上进行连接时的Where条件。
您有几个选项可以实现此目的。
就个人而言,我会映射关系类,但我会将其隐藏在Service
之外,因此使用服务的代码不知道关系类。