【发布时间】:2020-09-01 02:21:15
【问题描述】:
我想知道在以下情况下有什么好的做法:
@Entity
@Table(name = "word")
class WordEntity(uuid: UUID? = null,
@Column(nullable = false, unique = true) val name: String
) : BaseEntity(uuid)
如果我有这个实体的 Iterable 并且想要调用方法 saveAll 将其持久保存到数据库中,则可以抛出 ConstraintViolationException。
所以我的目标是只将唯一记录添加到数据库中。我可以循环并执行以下操作:
fun saveAll(words: List<WordRequest>): List<WordDTO> {
...
for (wordEntity in wordEntities) {
try {
result.add(wordRepository.save(wordEntity))
} catch (e: RuntimeException) { }
}
...
}
或者我可以在每个循环上做一个 findByName 来检查它是否存在。
所以我的问题是我应该选择哪个选项,有没有更好的方法来处理这个问题?
【问题讨论】:
标签: java spring database jpa kotlin