Как сопоставить коллекции Hibernate с принудительным ограничением столбца Oracle NOT NULL?

У меня есть 2 таблицы, ЗАПРОС и ЭЛЕМЕНТ с отношениями «один ко многим», так что запрос имеет много элементов.

Я хотел бы применить ограничение Oracle NOT NULL для столбца внешнего ключа ELEMENT.ENQUIRY_ID, поскольку это лучшая практика. У меня есть следующая коллекция объекта Inquiry:

@OneToMany(cascade = CascadeType.ALL)
@JoinColumn(name = "ENQUIRY_ID", referencedColumnName = "ID")
private Set<Element> elements = new HashSet<Element>();

Когда я применяю ограничение NOT NULL, я получаю следующую трассировку стека:

Вызвано: java.sql.BatchUpdateException: ORA-01400: невозможно вставить NULL в («ELEMENT». «ENQUIRY_ID»)

Таким образом, Hibernate, очевидно, сохраняет коллекцию элементов перед родительским запросом, а затем возвращается и выполняет ОБНОВЛЕНИЕ в поле внешнего ключа.

Есть ли способ применить ограничение NOT NULL для поля внешнего ключа коллекции?


person Andrew Eells    schedule 07.01.2011    source источник


Ответы (1)


Вы пробовали nullable = false в @JoinColumn?

person axtavt    schedule 07.01.2011
comment
Спасибо, axtavt, сработало, легко, когда знаешь как! Я нигде не могу найти описание — хотя, возможно, ищу неправильно — но написал в блоге о сценарии, вашем решении и о том, как Hibernate интерпретирует аннотации на andrew-eells.com/2011/01/09/ - person Andrew Eells; 10.01.2011