实体由多个实体拥有

时间:2015-06-08 17:04:32

标签: java jpa constraints eclipselink

考虑以下关系:

实体A与实体B具有双向一对多关系。 实体A与实体C具有单向一对一的关系。 实体C与实体D具有双向一对多关系。 实体B与实体D具有双向一对多关系。

然后

    A a =new A();
    B b =new B();
    C c =new C();
    D d =new D();

    List<B> bs=new ArrayList<>();
    bs.add(b);
    a.setBs(bs);
    b.setA(a);

    a.setC(c);
    List<D> ds=new ArrayList<>();
    ds.add(d);
    b.setDs(ds);
    d.setB(b);

   c.setDs(ds);
   d.setC(c);

所有关系都有级联合并

em.merge(a);

调用merge psql(引发PostgreSQL异常)时说明插入d是不可能的,因为b不存在(约束违规)。 似乎 a 持久/插入比 c 持久/插入比eclipse链接试图插入 d b 仍然 b 没有插入。 如何解决这样的问题,知道所有这一切都必须在同一个交易中发生。

0 个答案:

没有答案