gpt4 book ai didi

java - Hibernate:重命名 @ManyToOne 关系中自动生成的 Id

转载 作者:行者123 更新时间:2023-11-29 13:12:10 26 4
gpt4 key购买 nike

我有一个 MySQL 数据库,其中包含两个表:contactsaddresses。表 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com