У меня есть Keyword
и KeywordType
как сущности. Есть много ключевых слов нескольких типов.
При попытке сохранить второе ключевое слово типа ограничение уникальности нарушается, и транзакция откатывается.
Выполняя поиск, я нашел несколько вариантов (некоторые из них относятся к разным контекстам, поэтому я '
То же самое относится к блокировке, предложенной для другой ситуации здесь
Пользовательские инструкции вставки, предложенные в this и this сообщениях, я думаю, не будет работать должным образом, поскольку Я использую Oracle, а не MySQL, и мне хотелось бы привязать реализацию к 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;
...
}