2011-01-07 6 views
3

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

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

@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 в («ЭЛЕМЕНТ». «ENQUIRY_ID»)

Так Hibernate, очевидно, сохраняющаяся коллекцию элементов до родительского запроса, а затем идет назад и делает обновленную информацию о ключевом поле иностранного впоследствии.

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

ответ

2

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

+0

Спасибо axtavt, что сработало, легко, когда вы знаете как! Я нигде не могу найти запись - хотя может и не быть правильно, но в блогах о сценарии, вашем решении и о том, как Hibernate интерпретирует аннотации на http://www.andrew-eells.com/2011/01/09/ждущий режим, внешний ключ-коллекция-базы данных лучшая практика / –