对于JPA中的同一个字段,是否可以同时使用@JoinColumn和@Column,从而实现更新?JPA,Combine @JoinColumn和@Column
可以说我有一个这样的实体:
@Entity
public class Person{
@JoinColumn(name = "address_id", referencedColumnName = "id")
@ManyToOne
private Address address;
// getters and setters
}
假设地址对象已经存在 - 创建该对象时,我需要坚持一个人之前,从数据库读取的地址。这是我整个应用程序的当前设计,但它可能会导致性能问题。是否有可能通过仅使用ID来增加持久性的可能性,同时保持与真实对象持久存在的可能性(因为不需要在别处改变大量的代码)?像这样的东西
@Entity
public class Person{
@JoinColumn(name = "address_id", referencedColumnName = "id")
@ManyToOne
private Address address;
@Column(name="address_id")
private Integer addressId;
// getters and setters
}
em.persist(new Person(1));
em.persist(new Person(getAddress(1)));
是否可以注释以允许这两个持续行?我目前的看法是,其中一个领域需要有insertable = false
我不会真正理解你的尴尬。 Column和JoinColumn都只是定义数据库列名和属性的注释,没有定义关系。我的第一个问题是,这是否有可能一个地址被多于一个人使用?或有一人一个地址,如果两个人住在同一地址的地址获得redudant?无论如何,你应该使用一对多或OneToOne注解来定义你的人,你的地址和之间的关系,当你定义级联只刷新,一个持续存在或对人合并绝不会创建一个地址了。 –
对不起,忘了多对一的注释 –
你的最后一个假设是正确的,其中一个字段必须有'插入= FALSE',(也'更新= FALSE'和'可删除= FALSE'),使现场将只是一个读-只有一个。 –