【问题标题】: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 -...

连接表还不够吗?

此外,当我保存电话号码或联系人时,连接表会更新,但连接列不会更新。那么为什么这个连接列在这里呢?

感谢您的帮助。

【问题讨论】:

    标签: hibernate


    【解决方案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 访问表元数据时出错,想知道使用什么数据库来防止此错误
    猜你喜欢
    • 2012-12-06
    • 2020-02-04
    • 2022-01-20
    • 1970-01-01
    • 2017-11-24
    • 1970-01-01
    • 2019-03-25
    • 2020-02-09
    • 2018-10-05
    相关资源
    最近更新 更多