ConcurrentModificationException:更新Spring数据JPA父实体时

时间:2019-03-26 03:51:06

标签: spring hibernate spring-boot spring-data-jpa jhipster

我有两个jpa实体:Family和FamilyMembers。

家庭:

@Entity
@Table(name = "family")
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
public class Family implements Serializable {

    @OneToMany(mappedBy = "family")
    private Set<FamilyMember> familyMembers = new HashSet<>();
}

家庭成员

@Entity
@Table(name = "family_member")
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
public class FamilyMember implements Serializable {

    @ManyToOne()
    @JoinColumn(name="family_id")
    private Family family;
}

家庭实体是家庭成员的父实体。

当我尝试使用以下代码更新父实体“家族”时,我的问题就出现了:

familyRepository.save(family);

我遇到以下异常:

java.util.ConcurrentModificationException:

请告知!

1 个答案:

答案 0 :(得分:0)

我已经解决了问题。

我正在同一笔交易中调用以下方法:


    @Override
    @Transactional(readOnly = true)
    public Optional<EntityAuditConfiguration> findByEntityName(String entityName) {
        return entityAuditConfigurationRepository.findByEntityName(entityName);
    }

我更改了创建新的Spring事务的方法,如下所示:

    @Override
    @Transactional(readOnly = true, propagation = Propagation.REQUIRES_NEW)
    public Optional<EntityAuditConfiguration> findByEntityName(String entityName) {
        return entityAuditConfigurationRepository.findByEntityName(entityName);
    }