我有2个表customer和customerhistory。 customhistory具有外键customerId,该外键引用了客户的customerId。在JPA生成的Entity中,我在customerhistory类中有一个customer对象,而我只想在consumerhistory表中保存customerId
我正在获取正确的customerId,但是当我要保存属性customerId时,我与客户只有我的对象,而consumerhistory的自动生成的实体类中没有customerId
@Entity
public class Customerhistory implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private int primarykeyId;
//bi-directional many-to-one association to Customer
@ManyToOne
@JoinColumn(name="CustomerId")
private Customer customer;
如上所示,我在实体customerHistory中没有customerId。如何保存呢?
最佳答案
使用entityManager的getReference调用使用ID加载客户对象,然后将其设置到客户历史记录上。在大多数情况下,此调用将返回仅嵌入id的代理,除非调用客户的某些其他方法,否则不会加载客户属性。
Customer customer = entityManager.getReference(Customer.class, cutomerId);
CustomerHistory newCustomerHistory = new CustomerHistory();
newCustomerHistory.setCustomer(customer);
entityManager.persist(newCustomerHistory);