У меня есть Keyword
и KeywordType
в качестве сущностей.Есть много ключевых слов нескольких типов.
При попытке сохранить второе ключевое слово типа ограничение уникальности нарушается, и транзакция откатывается.
В поиске я нашел несколько вариантов (некоторые из них в разных контекстах, поэтому я не уверен в их обоснованности здесь) - этот пост и этот пост советоватьпоймать исключение, которое было бы бесполезно для меня, когда я в конечном итоге, где я начал, и все еще нужно как-то сохранить ключевое слово.
То же самое относится к блокировке, предложенной для другой ситуации здесь
Пользовательские операторы вставки, предложенные в этой и этой сообщениях, не будут работать должным образом. Iдумаю, поскольку я использую Oracle, а не MySQL, а woulnd хотел бы связать реализацию с Hibernate.
Другой обходной путь - сначала попытаться получить тип в коде, генерирующем ключевые слова, и установить его для ключевого слова, если оно найдено, или создать новое, если нет.
Итак, что быбыть лучшим - самым надежным, переносимым (для разных баз данных и поставщиков сохраняемости) и вменяемым подходом здесь?
Спасибо.
Участвующие лица:
public class Keyword {
@Id
@GeneratedValue
private long id;
@Column(name = "VALUE")
private String value;
@ManyToOne
@JoinColumn(name = "TYPE_ID")
private KeywordType type;
...
}
и
@Entity
@Table(uniqueConstraints = {@UniqueConstraint(columnNames = { "TYPE" }) })
public class KeywordType {
@Id
@GeneratedValue
private long id;
@Column(name = "TYPE")
private String type;
...
}