首页 > 解决方案 > Spring Boot 应用程序创建两个数据库行

问题描述

我有一个spring bootMySQL数据库的应用程序。下面的方法是创建具有相同字段的药物的两行。

    @Override
    @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED)
    public MedicationGroup save(MedicationGroup medicationGroup) {
        return medicationRepository.save(medicationGroup);
    }

药物组实体:

@Getter
@Setter
@Table(name = "medication_group")
@Entity
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class MedicationGroup extends AbstractEntity implements Persistable {

    private static final long serialVersionUID = 2948809916398284974L;

    private Short type;

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "patient_id", nullable = false, updatable = false, insertable = false)
    private Patient patient;

    @Column(name = "patient_id")
    private Long patientId;

    @OneToMany(fetch = FetchType.LAZY, mappedBy = "medicationGroup", cascade = CascadeType.ALL)
    private List<Prescription> prescriptions;

}

下面的行被创建到数据库中:

在此处输入图像描述

它不会持续发生,它会在找不到原因的任何时候发生。

标签: javahibernatespring-bootspring-data-jpa

解决方案


您确定该方法没有被调用两次。尝试在其中一个字段中使用主键,这样重复数据就不会存储在数据库中。


推荐阅读