我有一个 MySQL 数据库,其中包含两个表:contacts
和 addresses
。表 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
}
最佳答案
您需要将 @JoinColumn(name = "id")
与 Address
中的 @ManyToOne
一起使用。
通过将mappedBy
添加到addresses
,您可以让子级拥有该关系。当您提到 JoinColumn
时,您是在告诉哪些列在数据库中保存实际关系。
此外,您正在谈论 contact_id
,但我在您的映射中看不到它。
关于java - Hibernate:重命名 @ManyToOne 关系中自动生成的 Id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21945477/