java - Spring Boot 应用程序创建两个数据库行
问题描述
我有一个spring boot
带MySQL
数据库的应用程序。下面的方法是创建具有相同字段的药物的两行。
@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;
}
下面的行被创建到数据库中:
它不会持续发生,它会在找不到原因的任何时候发生。
解决方案
您确定该方法没有被调用两次。尝试在其中一个字段中使用主键,这样重复数据就不会存储在数据库中。
推荐阅读
- python - Python:键盘输入并继续?
- javascript - How this ReactJS syntax works?
- c# - Iterate on 2 consecutive values of an IEnumerable
- react-native - 位置:修复了 React 原生 Webview 在 iOS 和 Android 上的行为不一致
- r - 为什么这个线性编程请求在迭代时不起作用?
- python - 使用 python 请求下载 Mp4
- javascript - 日期过滤器需要 jquery 和 daterangepicker
- visual-studio - TeamCity Visual Studio Build 找不到包参考包
- generics - Xposed如何使用接口创建泛型类的实例
- python - 所有大小 >= 2 的子数组中的最大 GCD