为啥hibernate会创建一个连接表和一个连接列?
Posted
技术标签:
【中文标题】为啥hibernate会创建一个连接表和一个连接列?【英文标题】:Why is hibernate creating a join table as well as a join column?为什么hibernate会创建一个连接表和一个连接列? 【发布时间】:2012-03-31 13:44:44 【问题描述】:这是我用来表达双向 OneToMany 关系的两个类。
班级联系 @OneToMany 公共设置 getPhoneNumbers() 返回电话号码; 类电话号码 @ManyToOne 公共联系人 getContact() 返回联系方式;Hibernate 正在创建一个连接表(我认为这对我的需要有好处)
联系电话 -Contact_id -phoneNumbers_id但为什么要在 phoneNumber 表上创建这个额外的连接列 (contact_id)
电话号码 -ID -contact_id -...连接表还不够吗?
此外,当我保存电话号码或联系人时,连接表会更新,但连接列不会更新。那么为什么这个连接列在这里呢?
感谢您的帮助。
【问题讨论】:
【参考方案1】:我找到了解决办法:
班级联系 @OneToMany(mappedBy="contact", targetEntity=PhoneNumber.class, orphanRemoval=false) 公共设置 getPhoneNumbers() 返回电话号码; 类电话号码 @ManyToOne @JoinTable(name="t_join_contact_phonenumber", joinColumns=@JoinColumn(name="PHONENUMBER_ID"), inverseJoinColumns=@JoinColumn(name="CONTACT_ID")) 公共联系人 getContact() 返回联系方式;现在,Hibernate 只创建连接表
t_join_contact_phonenumber -CONTACT_ID -PHONENUMBER_ID谢谢。
【讨论】:
您好,您是否使用 mysql 来存储您的数据?因为我使用 MySQL 访问表元数据时出错,想知道使用什么数据库来防止此错误以上是关于为啥hibernate会创建一个连接表和一个连接列?的主要内容,如果未能解决你的问题,请参考以下文章
为啥 MyEclipse 的 Hibernate 逆向工程在映射某些表时会创建多个类?
如何将表与中间表和附加相关列spring hibernate mvc连接起来
如何不使用 Hibernate Envers 审计连接表和相关实体?