JPA:保留外键约束的问题

JPA:保留外键约束的问题,jpa,jakarta-ee,persistence,foreign-keys,orm,Jpa,Jakarta Ee,Persistence,Foreign Keys,Orm,我有两个实体: 客户实体 @Entity public class Customer { @Id @GeneratedValue(strategy = GenerationType.AUTO) private Long id; private String name; @OneToMany(mappedBy="customer", cascade=CascadeType.ALL) private List<Facility> facilities; //Setter and

我有两个实体:

客户实体

@Entity
public class Customer {

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;

private String name;

@OneToMany(mappedBy="customer", cascade=CascadeType.ALL)
private List<Facility> facilities;

//Setter and Getter for name and facilities

public void addFacility(Facility facility){
    this.facilities.add(facility);
}
}
所以我主要是这样做的

    Customer customer = new Customer();
    customer.setName("Wake Forest University");
    Facility facility = new Facility();
    facility.setName("Tom Cruise");
    EntityManager entityManager = Persistence.createEntityManagerFactory("EntityClassPU").createEntityManager();
    entityManager.getTransaction().begin();
    customer.addFacility(facility);
    entityManager.persist(customer);
    entityManager.getTransaction().commit();

Wake Forest University
已成功插入
Customer
,并且
Tom Cruise
已成功插入
Facility
,但是在
Facility
内部,
Customer\u FK
值为空,这表明我无法持久保存外键约束。我做错了什么?

您的
客户
设施
之间的关系是双向关联,您必须管理关联的双方。您可以手动执行此操作,但我建议使用
addFacility()
方法执行此操作:

public void addFacility(Facility facility){
    if (this.facilities == null) { 
        this.facilities = new ArrayList<Facility>();
    } 
    this.facilities.add(facility);
    facility.setCustomer(this); // that's the part you're currently missing
}
公共设施(设施){
如果(this.facilities==null){
this.facilities=new ArrayList();
} 
本.设施.新增(设施);
facility.setCustomer(this);//这是您当前缺少的部分
}

@PascalThivent:你能抽出几分钟帮我解决这个问题吗>>
public void addFacility(Facility facility){
    if (this.facilities == null) { 
        this.facilities = new ArrayList<Facility>();
    } 
    this.facilities.add(facility);
    facility.setCustomer(this); // that's the part you're currently missing
}