Rak*_*esh 9 java hibernate jpa
我在2对象Parent&Child之间有一个简单的OneToMany关联,如下所示.
父实体
@Entity
public class Parent {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
private String name;
@Version
private Long version;
@OneToMany(cascade = CascadeType.ALL, orphanRemoval = true, fetch = FetchType.EAGER)
List<Child> children = new ArrayList<Child>();
....
}
Run Code Online (Sandbox Code Playgroud)
子实体
@Entity
public class Child {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
private String name;
@Version
private Long version;
...
}
Run Code Online (Sandbox Code Playgroud)
以下是我的测试,它加载一个现有的父项添加一个子项并在父项上调用EntityManager.merge().
@Test
public void testParent(){
Parent parent = (Parent) dao.loadParent(Parent.class, parentId);
Child c = new Child();
c.setName("c");
parent.getChildren().add(c);
dao.mergeEntity(parent);
Assert.assertNotNull(c.getId());
}
Run Code Online (Sandbox Code Playgroud)
断言,其中id的主键被测试失败.我看到记录正在数据库中正确插入,同时自动分配了主键.
我的所有DAO调用都包含在事务中,并且传播为必需.
Boz*_*zho 13
EntityManager.merge(..)
获取一个实例并返回一个托管的实例.在瞬态实例的情况下,它返回一个新实例(不修改原始实例)
所以你的mergeEntity(..)
方法应该return em.merge(entity)
归档时间: |
|
查看次数: |
6442 次 |
最近记录: |