【发布时间】:2012-07-22 01:26:37
【问题描述】:
休眠 EntityManager 3.4.0 或 3.6.10
MyEntity {
@Id // NOT @GeneratedValue
long cislo;
@OneToMany( ... )
List<MyItem> items = new ArrayList();
public MyEntity( long cislo ) { this.cislo = cislo; }
...
}
然后,在 DAO 中:
MyEntity ent = new MyEntity( id );
ent.addItem( new Item( ... ) );
ent.addItem( new Item( ... ) );
ent = em.merge( ent );
1) 为什么我需要使用merge(),而不是persist(),它会抱怨实体已分离?是手动设置ID的原因吗?
2) 为什么这个合并返回一个没有集合集的代理?
3) 最重要的是:我怎样才能从merge()获得完全初始化的实体?
除了在成员集合上设置EAGER。
我可以使用原始对象,但我很好奇它是否可能。
我也可以查询实体,但这似乎是在浪费资源。
【问题讨论】: