Я пытаюсь использовать Grails с существующим устаревшим БД старого стиля. У меня есть составные ключи везде (PK и FK) и ... больше FK, разделяющих тот же столбец таблицы. Пример:
Все таблицы имеют общее значение "company".
class SalesOrder implements Serializable{
...
static hasMany = [items: SalesOrderItem]
static mapping = {
table 'MYORDERTABLE'
id composite: ["company", "orderId"], generator: "assigned"
Чем мои позиции заказа на продажу:
class SalesOrderItem implements Serializable{
....
Material mat
static belongsTo = [order: SalesOrder]
static mapping = {
table 'MYORDERITEMSTABLE'
id composite: ["order", "lineNumber"], generator: "assigned"
lineNumber column: 'ITEMNUMBER'
columns {
order { column name:'COMPANY'
column name:'ORDERNUMEBR' }
}
Весь предыдущий код работает (только с граалями 2.0 M1). Мой "заказ" имеет составной PK (company + orderId), мой "orderLine" имеет составной PK (company + orderId + orderLineId).
Проблемы возникают, когда у меня есть другие атрибуты с составными ключами, которые разделяют атрибут «company» как один элемент FK, например
columns{
mat { column name: 'COMPANY', insertable:false, updateable:false
column name: 'MATTYPE'
column name: 'MATCODE'
column name: 'MATCODEEXT1'
column name: 'MATCODEEXT2'
}
}
Это не работает, появляется ошибка
Repeated column in mapping for entity: SalesOrderItem
column: COMPANY (should be mapped with insert="false" update="false")
И я застрял прямо здесь. Если бы это был только один случай, я бы использовал дешевый и грязный обходной путь, но у меня есть много таких случаев, как этот.
У вас есть предложения? Подсказка? Решение? Любая помощь приветствуется?
Спасибо,
Lorenzo
Обновление
Я нашел следующий пост, в основном с тем же вопросом о гибернации:
должен-зимуют-быть в состоянии к ручке-перекрывающей-ВНЕШНЕПОЛИТИЧЕСКИЕ ключи
и кажется, что это все еще нерешенная проблема:
Спящий джира
нет гибернации, нет гормона, я полагаю. Что касается обходного пути, я думаю об использовании событий aferLoad, beforeInsert, beforeUpdate для загрузки / обновления классов домена, связанных с этим FK.