我有一个包含两个表的contacts
和addresses
的MySQL数据库。表addresses
包含一个大整数类型的列contactid
,用于与contact
表连接。
我在Hibernate中有以下实体,具有双向OneToMany - ManyToOne关系。问题是@ManyToOne
关系在我的数据库中创建了另一个类型为整数的contact_id
列。我想使用现有的contactid
列而不是contact_id
,所以我认为我应该将自动生成的contact_id
列重命名为contactid
,但我不知道是否这是可能的......
有没有办法在不修改数据库的情况下解决这个问题?
提前致谢。
@Entity
@Table(name="contacts")
public class Contact implements Serializable {
@Id
@Column(name="id")
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Integer id;
@Column(name="name")
private String name;
@OneToMany(cascade=CascadeType.ALL, fetch=FetchType.EAGER, mappedBy="contact")
private List<Address> addresses= new ArrayList<Address>();
// getters and setters
}
@Entity
@Table(name="addresses")
public class Address implements Serializable {
@Id
@Column(name="id")
@GeneratedValue(strategy=GenerationType.IDENTITY)
private long id;
@Column(name="street")
private String street;
@Column(name="postalcode")
private String postalcode;
@ManyToOne
private Contact contact;
// getters and setters
}
答案 0 :(得分:1)
您需要@JoinColumn(name = "id")
以及@ManyToOne
中的Address
。
通过将mappedBy
添加到addresses
,您可以让孩子拥有关系。当你提到JoinColumn
时,你告诉我们在DB中保存实际关系的列是什么。
另外,你在谈论contact_id
但我在你的地图中看不到。