我有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);

10-05 17:46