我有以下代码:
completableFuture
.thenApply(x -> transactionTemplate.execute(s -> {
repository.save(entity);
entity.update();
return entity;
}));
entity
是来自另一个线程的实体,我必须在异步调用后处理它。问题是当我调用entity.update()
并且某些数据被更改时,Hibernate不会发出更新查询。如果我在repository.save(entity)
之后放置entity.update()
一切正常,但对我来说似乎有些奇怪。
在这些情况下不应该进行脏检查吗?
答案 0 :(得分:1)
如果我理解正确,您正尝试通过调用EntityManager
将实体附加到当前save
。为此,您应该使用从save
返回的实体进行所有进一步的工作。
保存给定的实体。使用返回的实例进行进一步操作,因为save操作可能已完全更改了实体实例。