问题描述
为了简洁起见,我有一个O:M关系的vendor-Editypes的父子。我无法解释的是,如果包括下面注释掉的行,则将创建两次EDITypes a0-a3。令人印象深刻,但不是完全理解如何保存供应商一次自动创建EDIType,如下所示。也没有将EDIType添加到供应商的方式会强制两次创建EDIType。我本来必须保存EDITypes。 O:M的受控副本如何控制?我是否必须始终保存在M侧?
EDIType a0 = new EDIType(abuyers,"receiving00-xls");a0.setvendor(abuyers);
EDIType a1 = new EDIType(abuyers,"receiving01-xlsx");a1.setvendor(abuyers);
EDIType a2 = new EDIType(abuyers,"receiving02-pdf");a2.setvendor(abuyers);
EDIType a3 = new EDIType(abuyers,"creditMemo00-xls");a3.setvendor(abuyers);
List<EDIType> eList = Arrays.asList(a3,a2,a1,a0);
//abuyers.getEdis().addAll(eList); //when commented out correct. else double creation
this.add(abuyers);
解决方法
就像插入EDIType表一样,将外键作为买方的主键。插入完成后,您无需在Abuyer上进行任何更改。
毕竟,只是ORM尝试以面向对象的方式处理SQL表,但仍然强调机制仍然是SQL表。