0
我指定@JoinTable
为@ManyToMany
,以便我可以指定表,列和外键的名称。当我指定一个休眠生成它自己的连接表
Hibernate似乎正在生成我的地雷,但它仍然试图生成它自己的。
下面是有问题的@ManyToMany
的实体。仅包含实体的相关代码。
@Entity
@Table(name = "DAMAGE")
public class DamageReport {
@Id
@GeneratedValue(strategy = GenerationType.AUTO, generator = "DAMAGE_ID_GENERATOR")
@SequenceGenerator(name = "DAMAGE_ID_GENERATOR", sequenceName = "DAMAGE_ID_SQ")
@Column(name = "DAMAGE_ID")
private Long id;
//...Bunch of other fields
@ManyToMany
@JoinTable(name = "BOARD_MEMBER_DAMAGE_REPORTS", joinColumns = {
@JoinColumn(name = "DAMAGE_REPORT_ID") }, inverseJoinColumns = {
@JoinColumn(name = "BOARD_MEMBER_ID") }, foreignKey = @ForeignKey(name = "DAMAGE_REPORT_ID_FK"), inverseForeignKey = @ForeignKey(name = "BOARD_MEMBER_ID_FK"))
private Set<BoardMember> boardMembers;
}
下面是其他实体在@ManyToMany
。仅包含实体的相关代码。
@Entity
@Table(name = "BOARD_MEMBER")
public class BoardMember {
@Id
@GeneratedValue(strategy = GenerationType.AUTO, generator = "BOARD_MEMBER_ID_GENERATOR")
@SequenceGenerator(name = "BOARD_MEMBER_ID_GENERATOR", sequenceName = "BOARD_MEMBER_ID_SQ")
@Column(name = "BOARD_MEMBER_ID")
private Long id;
@ManyToMany
public Set<DamageReport> damageReports;
}
任何帮助是极大的赞赏。
哇。那很简单。谢谢! - 有没有一个原因,我不能在'DamageReport'一侧添加这个? – qbolt
是的。在双向映射中,必须始终存在一个所有者方(本例中为DamageReport),而另一方(BoardMember)必须**仅引用所有者方(使用mappedBy =“boardMembers”)。 – adyjr