java - Spring boot应用程序创建两个数据库行

标签 java hibernate spring-boot spring-data-jpa

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

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

Medication Group Entity:

@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;

}

Below rows are created into database :

enter image description here

它不会持续发生,它随时都会发生,无法找到原因。

最佳答案

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

关于java - Spring boot应用程序创建两个数据库行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53295688/

相关文章:

mysql - 更新非主键列时出现重复条目

java - 在 Java 中解析 JavaScript 日期字符串

java - 如何设置spring dispatcherServlet路径?

java - 我需要帮助修复一个 java bug

java - Thread.sleep导致android程序崩溃

java - 使用复合主键和注释 : 映射多对多

java - 如何避免过多的 hibernate 刷新到数据库

java - 如何使用 Spring WebSockets 和 Undertow 接收大于 16kB 的 WebSocket 消息

java - 弹性 Spring jpa hibernate

spring-boot - 当方法抛出异常时缓存逐出行为