gpt4 book ai didi

java - 在 Spring Data Repositories 之上使用 EntityManager

转载 作者:行者123 更新时间:2023-11-30 02:05:08 28 4
gpt4 key购买 nike

最近,我遇到了以下代码:

@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>{
}

我的问题是,当我们随后使用 myEntityRepository 持久化实体时,是否真的有必要调用 entityManager.merge(entity) ?是否存在实体管理器正在执行存储库无法执行的操作?调用存储库还不够吗?

最佳答案

在我看来,这就像 cargo 崇拜编程。 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 Data Repositories 之上使用 EntityManager,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51589123/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com