我有3个实体。
public class Masterpiece {
@Id
public Long id;
@OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
private List<Product> products;
}
public class Product {
@Id
public Long id;
}
public class Purchase {
@Id
public Long id;
@OneToMany(fetch = FetchType.EAGER)
private List<Product> productList;
}
当我尝试使用产品保存Masterpiece时,我收到错误:
在表“product”上插入或修改违反外键“fk_product_purchase_4”\ n详细信息:Key(purchase_id)=(1)未在“购买”中出现
我使用ebean生成的ddl。
答案 0 :(得分:0)
你和Product有两个OneToMany关系,好吧?既然你正在创造一件杰作,那么它将创造一个产品。但是,在这种情况下没有创建Purchase对象。根据此https://en.wikibooks.org/wiki/Java_Persistence/OneToMany(请参阅连接表主题),另一方(在这种情况下为产品)必须具有后退外键。在您的问题中,它表示Masterpiece和Purchase的后引用外键,但在创建Masterpiece和Product关系时不存在Purchase。也许解决方案是将它与ManyToOne映射回来,或者在每个OneToMany(Masterpiece和Purchase)中使用Join Table实现每个关系的分离表。 我希望它有用!