我是hibernate的新手。
我有以下情况,
@Entity(name="A")
Class A {
@Id
int id;
Set<B> listB;
}
@Entity(name="B")
Class B {
@Id
CompositebPK bPk;
}
Class CompositebPK {
@Column(name="id")
int aId;
@Column(name="user_name")
String uname;
}
@Entity (name = "user")
Class User {
@Column (name ="user_name")
String uname;
}
表结构如下,
Table A:
int id
Table B:
int id
String uname
User:
String uname
String password
A到B是1对多关系。 B到用户是1对多。
我希望在A中列出B。
解决问题的最佳方法是什么?
在我搜索的网络中,我只是获取简单列的反向连接信息,如果我尝试它不能解决,那么是否有一种特殊的方法来实现这一目标?
答案 0 :(得分:1)
尝试以下映射配置:
在A
实体类中:
@Entity(name="A")
class A {
@Id
int id;
@OneToMany(fetch = FetchType.LAZY, mappedBy = "bPk.a")
@Cascade(value = { CascadeType.DELETE })
Set<B> listB;
}
在CompositebPk
:
class CompositebPK {
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumns({ @JoinColumn(referencedColumnName = "id", nullable = false) })
A a;
@Column(name="user_name")
String uname;
}