我正在尝试将实体保存到数据库,该实体具有复合主键
我有一个宁静的API,可以提供上述功能。
我的JPA存储库接口和类:
@NoRepositoryBean
public interface customRepository<T, ID extends Serializable> extends JpaRepository<T, ID> {
void refresh(T t);
void merge(T t);
}
public class customRepositoryImpl<T, ID extends Serializable> extends SimpleJpaRepository<T, ID>
implements customRepository<T, ID> {
private final EntityManager entityManager;
public customRepositoryImpl(JpaEntityInformation entityInformation, EntityManager entityManager) {
super(entityInformation, entityManager);
this.entityManager = entityManager;
}
@Override
@Transactional
public void refresh(T t) {
entityManager.refresh(t);
}
@Override
@Transactional
public void merge(T t) {
entityManager.merge(t);
}
我正在尝试使用以下方法将实体合并到服务类中:
myEntities.forEach(myEntity -> {
customRepository.merge(myEntity);
});
当我进行API调用以保存实体时,我看到了以下提到的异常。
"stack_trace":"org.springframework.orm.ObjectOptimisticLockingFailureException:
Batch update returned unexpected row count from update [0];
actual row count: 0; expected: 1;
nested exception is org.hibernate.StaleStateException:
Batch update returned unexpected row count from update [0];
actual row count: 0; expected: 1
jpa的合并是否使用批处理更新来保留实体?
而且由于我要遍历实体而进行多个merge()
调用,因此为每个merge()
调用创建的事务是否在下一个merge()
调用之前突然结束?