【发布时间】:2022-12-14 06:26:37
【问题描述】:
我有一项服务试图保留两个实体。我的期望是,如果一个实体未能持久化,则应回滚而不是持久化另一个实体。但是一个是持久的,而另一个不是。 这是我的服务等级
@Service
@Transactional(value = "db1TransactionManager")
public class ServiceImpl {
@Override
@Transactional
public void insertOrUpdate(Entity1 entity1, Entity2 entity2) {
db1Repository.insert(entity1, Entity1.class);
db1Repository.insert(entity1, Entity2.class);
}
}
这是我的存储库类
@Transactional(value = "db1TransactionManager")
@Repository(value = "db1Repository")
public class Db1RepositoryImpl {
@PersistenceContext(unitName = "db1")
private EntityManager em;
@Override
public <T> void insert(T entity, Class<T> tClass) {
em.persist(entity);
// em.flush();
}
}
我故意将 entity2 设置为 null 以检查回滚是否有效,但 entity1 仍然存在。我如何使这个事务原子化?
【问题讨论】:
标签: java spring-boot hibernate transactions