这是我用来表达双向OneToMany关系的两个类。
Class Contact { @OneToMany public Set getPhoneNumbers() { return phoneNumbers; } }
Class PhoneNumber{ @ManyToOne public Contact getContact() { return contact; } }
Hibernate正在创建一个连接表(我认为这对我的需求是好的)
contact_phonenumber -Contact_id -phoneNumbers_id
但为什么要在phoneNumber表上创建这个额外的连接列(contact_id)
phonenumber -id -contact_id -...
联接表不够吗?
此外,当我保存电话号码或联系人时,连接表会更新,但不会更新连接列。那么为什么这个连接列在这里呢?
感谢您的帮助。
答案 0 :(得分:1)
我找到了解决方案:
Class Contact { @OneToMany(mappedBy="contact", targetEntity=PhoneNumber.class, orphanRemoval=false) public Set getPhoneNumbers() { return phoneNumbers; } }
Class PhoneNumber{ @ManyToOne @JoinTable(name="t_join_contact_phonenumber", joinColumns=@JoinColumn(name="PHONENUMBER_ID"), inverseJoinColumns=@JoinColumn(name="CONTACT_ID")) public Contact getContact() { return contact; } }
现在,Hibernate只创建了连接表
t_join_contact_phonenumber -CONTACT_ID -PHONENUMBER_ID
感谢。