【发布时间】:2016-12-27 04:03:26
【问题描述】:
我有一个 Spring Batch 作业,需要将所有项目以一个块的形式写入数据库。我想要这种行为,因为
- 我需要在写入之前进行一些验证,包括比较读取项之间的比较。
- 如果任何验证失败,我需要确保没有任何项目被持久化或所有项目都被持久化。
- 这是一个小于 60kb 的少量数据。
该项目是一个Car,它有一个Model 属性。我遇到的问题是项目处理的一部分检查数据库中是否已经存在Model。如果是,它会从数据库中检索模型(包括自动生成的 id),因此不会创建另一个数据库条目。
现在,如果 Model 已经在之前的作业运行中保持不变,那么它可以正常工作。但是,当相同的Model 在同一个作业运行中出现两个不同的Cars 并且Model 之前没有保留时,它会失败。在这种情况下,会为同一个 Model 创建两个数据库行。
我正在使用带有Model 的JPA,其id 属性用@Id 和@GeneratedValue(strategy = GenerationType.IDENTITY) 注释。在写入之前如何确保相同的Model 不会多次写入数据库?
【问题讨论】:
标签: java spring hibernate jpa spring-batch