如果已经有一个使用该标识符加载到会话中的对象,是否可以使用Hibernate保存对象?

  • 如果会话包含该确切对象,而不是另一个具有相同ID的对象,则执行session.contains(obj)似乎仅返回true。
  • 如果对象是新对象,则使用merge(obj)会引发异常

===============>>#1 票数:4

您是否尝试过调用.SaveOrUpdateCopy()? 如果会话中存在具有相同ID的实体,或者根本没有实体,则它应在所有情况下均有效。 这基本上是万能的方法,因为它将瞬态对象转换为持久对象(保存),如果存在则更新对象(更新),或者如果实体是已经存在的对象的副本则进行处理(复制)。 。

否则,您可能必须在附加(.Update())您的“新”对象之前,先识别和.Evict()。 这应该很容易做到:

IPersistable entity = Whatever(); // This is the object we're trying to update
// (IPersistable has an id field)
session.Evict(session.Get(entity.GetType(), entity.Id));
session.SaveOrUpdate(entity);

尽管上面的代码可能可以对.Get()调用进行一些null检查。

===============>>#2 票数:1

怎么样:

session.replicate(entity, ReplicationMode.OVERWRITE);

  ask by qwerty translate from so

未解决问题?本站智能推荐:

1回复

在休眠状态下使用update或saveorupdate方法

如果无论如何都要管理该对象,则将跟踪其状态,并且对该对象所做的任何更改都将作为脏检查的一部分在数据库中自动update ,那么为什么需要update或saveOrUpdate方法? 更新资料 如果我们尝试保存分离的对象并且该对象与会话相关联,为什么update和saveOrUpdat
2回复

休眠两个表和一个对象

我有这样的说法: 例如,我必须在这两个表上创建一个对象: 当我更新field21时table2应该更新此字段,但是table1没有有关table2的任何信息,只有table2会给table1带来外键 知道我应该怎么做吗? 我无法更改表结构,只能在Java中创建新类。
34回复

Hibernate错误:org.hibernate.NonUniqueObjectException:具有相同标识符值的另一个对象已与会话关联

我有两个用户对象,而我尝​​试使用保存对象 我收到以下错误: 我正在使用创建会话 在保存之前我也尝试过session.clear() ,但仍然没有运气。 这是第一次我收到用户请求时获取会话对象,所以我得到的原因是说会话中存在该对象。 有什么建议?
4回复

Hibernate错误:org.hibernate.NonUniqueObjectException:具有相同标识符值的另一个对象已与会话关联[重复]

可能重复: Hibernate:具有相同标识符值的不同对象已与会话关联 我有像这个用户几乎相同的问题。 在我的情况下,我从db加载一个实体,我将此实体转换为DataTransferObject,然后我想编辑一个属性,之后我将其转换回entityObject,然后我更新该实体
2回复

Hibernate / JPA如何在另一个对象中保留对象?

我有三个类(House,Room,Address)是持久的(用JPA / Hibernate映射) 1)Address和Room对象是自动持久化还是我必须在调用house.save()之前在每个对象上调用save方法( room1.save() , room2.save() , addr
1回复

如果使用save,为什么saveOrUpdate在执行时不在数据库中插入注释

我对冬眠的奇怪行为有疑问。 我有这样的代码: 冬眠对我说: 但是如果我使用 我懂了: 对我来说这是好行为。 您能解释一下为什么行得通吗? 在我认为saveOrUpdate自动选择保存或更新之前。
1回复

我可以将saveOrUpdate方法与DynamicUpdate批注一起使用吗?

您好,我是Hibernate的新手。 我可以在实体类上使用带有DynamicUpdate批注的saveOrUpdate方法吗? 有人可以向我解释何时应使用saveOrUpdate , save和update方法吗? 还是wh是有优缺点?
3回复

为什么在JPA中通过id找到一个对象,而通过JPQL查询却找不到呢?

我有一个带有Spring @Transactional批注的JUnit 4测试用例,用于保存对象,然后尝试查找它。 使用此实现时,测试用例通过: 当我使用此实现时失败(然后更改测试用例中调用的方法):
1回复

休眠中的对象更新

我是ORM的新手。 在ORM框架中(例如休眠),是否可以将对象(实体)映射到表,并通过在上述对象-表关系之外更新表来使对象在内存中进行刷新和更新?所以内存中(高速缓存中)的对象始终反映表状态?
2回复

休眠(或SQL或HQL)查找具有集合的对象,该集合是另一个集合的子集

故事: 我有这个用户->角色->特权机制。 每个用户都有一些角色。 每个角色都有一些特权。 (用户,角色和特权都有名称和其他一些东西。但是为了使示例简单,我省略了它们) 然后我有一些房间。 您需要某些特权才能进入房间。 交易如下:如果用户拥有会议室所