最近,我遇到了以下代码:
@Transactional
public MyEntity insert(MyEntity entity) {
MyEntity merged = entityManager.merge(entity);
return myEntityRepository.save(merged);
}
实体管理器的定义如下:
@PersistenceContext private EntityManager entityManager;
仓库是Spring QueryDSL仓库:
@Repository
public interface MyEntityRepository extends QueryDslRepository<MyEntity>{
}
我的问题是,当我们紧接着使用
entityManager.merge(entity)
持久化实体时,是否真的需要调用myEntityRepository
?实体管理器在做某些事情,仓库无法做到吗?调用存储库不够吗? 最佳答案
在我看来,这就像是对货物的崇拜。必要时implementation of save()
已经进行了合并(有时是不必要的):
/*
* (non-Javadoc)
* @see org.springframework.data.repository.CrudRepository#save(java.lang.Object)
*/
@Transactional
public <S extends T> S save(S entity) {
if (entityInformation.isNew(entity)) {
em.persist(entity);
return entity;
} else {
return em.merge(entity);
}
}
关于java - 在Spring数据存储库顶部使用EntityManager,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51589123/