在冬眠中如果我 persist
新实体它应该成为被管理的,而且它应该返回被管理的实体。
如果实体已分离,则 merge
将返回托管实体,但我传递的实体仍将分离。
我在带hibernate的spring boot中尝试过,除了以下情况外,其他一切都正常:
User transientUser=new User();
transientUser.setId(9L);
User managedTransientUser=userRepository.save(transientUser);
如果我手动设置id(即使删除自动生成),我传递的实体(transientuser)仍将处于非托管状态。如果我使用generationidentity,那么返回的实体和传递的实体是相同的(id为null,db将自动递增),这是预期的吗?
1条答案
按热度按时间nfzehxib1#
那只是因为你不打电话
persist()
. 你在打电话吗userRepository.save()
.这个方法测试实体是否是新的(通过检查它是否已经有一个id)。如果是,它会打电话
persist()
. 否则它会调用merge()
. 因为您的实体已经有了一个id,所以它调用merge()
.