2013-04-29 67 views
0

嗨即时通讯不能理解为什么会发生这种情况保存一个新的实体,它保存所有的列,但不是连接表列和没有例外抛出的代码下面给出的保存一个新的实体..保存不工作的连接表列

newEntity=setPropsFromTransientFields(newEntity,"newEntity"); 
sess.save(newEntity); 

但是当我试图更新exixting记录,然后将其保存succesfullly连接表列

persistedEntity=setPropsFromTransientFields(persistedEntity,"updateEntity"); 
sess.saveOrUpdate(persistedEntity); 

加入下面

给出的映射表0

回答

0

Hibernate默认情况下不会尝试执行任何级联操作。因此,如果您有实体

class E{ 
    List<X> xes; 
} 

那么您有责任正确处理关系xes。那就是你需要确保X实体保存在数据库中。你也可以配置级联保存,然后Hibernate会自行考虑这一点。

您的更新按照您的预期工作,因为相关对象(我的示例中的X)在添加到Hibernate Session之前,Hibernate自动跟踪其更改并执行所有必需的数据库操作。这是我的猜测,因为我无法看到如何从DB读取对象。