NonUniqueObjectException
Hibernate抛出问题。
阅读文档和这篇博客文章,我替换了从update()
到的调用merge()
,它解决了问题。
我相信我理解例外的原因,以及为什么更改方法可以解决对象断开连接和会话边界方面的问题。
我的问题是:鉴于merge()
始终将解析为会话对象,或者如果它不存在,则将其检索,因此调用merge()通常是比update()
?
使用merge()
over有update()
什么缺点?
调用merge()通常比update()更安全吗?
作为避免NonUniqueObjectException的一种方法,可以。我认为这可以解释为什么JPA不允许使用更新方法。
在update()上使用merge()的缺点是什么?
未经建议的用户可能会认为他或她拥有新的管理实体。就像是
// myEntity (passed as parameter does not become managed)
// Only the one returned by the merge operation is a managed entity
session.merge(myEntity);
// "newValue" is not commited because myEntity is not managed
myEntity.setMyProperty("newValue");
并且,如果您的持久性上下文不包含您的实体,则 可能您不希望在更新之前选择 默认行为。但这是可以避免的
…
public void updateMyEntity(MyEntity updateableMyEntity);
// load does not hit the database
MyEntity myEntity = (MyEntity) session.load(MyEntity.class, updateableMyEntity.getId());
BeanUtils.copyProperties(myEntity, updateableMyEntity);
}
这样,您无需合并或更新方法即可更新实体。
问题内容: 我在Hibernate抛出问题上遇到了问题。 阅读文档和这篇]博客文章,我替换了从到的调用,它解决了问题。 我相信我了解例外的原因,以及为什么更改方法可以解决不相关对象和会话边界方面的问题。 我的问题是:鉴于始终将解析为会话对象,或者如果它不存在,则将其检索,因此调用merge()通常是比? 使用over 的缺点是什么? 问题答案: 调用merge()通常比update()更安全吗?
问题内容: 因此,我了解设置此属性 dynamic-update = true会 做什么,即,它仅考虑那些已修改的字段,并省略了为其他字段设置空值的工作。 节省开销,性能良好。 出于好奇而问:hibernate如何知道所有字段都被修改了?在触发更新查询之前,它是否先将选择查询生成的结果与数据库进行比较?假设是,那么比较不是性能的开销吗? 如我错了请纠正我。提前致谢! 问题答案: 因此,经过将近两个
问题内容: 有一个“ Item”类,它有一些相关的类,称为Vehicle,Vmodel,Category,ItemName,Brand,SizeModel。每个类都有属性ID和名称(例如Vehicle类,“ vid”和“ vname”)。 Item类具有itemcode。 另外,我还需要从给定的示例Item对象(称为“ ”)中获取Item对象,该对象等于我的示例item对象的属性以及与该对象关联的
问题内容: 这是hibernate.cfg.xml中的内容 另外,我正在动态覆盖某些属性… 但是,当我运行它时,出现此错误… 如何配置属性,以便heroku找到postgres驱动程序? (我是hibernate和Heroku的新手,因此非常感谢您的帮助:) 问题答案: 来自Heroku Postgres的URL格式不是JDBC格式。它是一种多语言格式,因此所有平台都可以使用它。因此,您需要将UR
问题内容: 我有一个hibernate映射,该映射一直工作到最近-尽管我确定这是我所做的某些更改的结果,但我似乎找不到它。 映射文件将字段定义为: 该类将该字段定义为: 运行此代码时,出现以下错误: 与此对应的数据库字段定义为: 我还有其他几个具有相似结构和定义的类,并且它们没有问题。但是,可能由于我最近所做的一些更改而导致,此特定映射将不再正常工作。 有什么建议么? 问题答案: 我不确定,但是您
问题内容: 我收到了一个我无法解释的奇怪的Hibernate异常。告诉我我正在使用二级缓存,但是没有在哪里指定二级缓存。这是例外: 而我的: 有什么想法会触发此异常吗?提前致谢! 问题答案: Pau在hibernate.cfg.xml中写了hibernate.cache.region.factory_class: 唯一的例外是不言而喻的。您必须设置 属性。例如,使用ehcache将添加以下行: n