В общем, у меня проблема с отображением: org.hibernate.MappingException: Repeated column in mapping for entity: os.comida.StoreDocumentRw column: Type (should be mapped with insert="false" update="false")
Чтобы представить проблему: у меня есть много типов документов, где каждый тип документа немного отличается от любого другого.Все они имеют общие свойства: дата, номер, издатель и т. Д. Поэтому я решил хранить все типы документов в одной физической таблице (один - это очень важно для меня).Для реализации этого я хотел использовать дискриминатор гибернации.
Ниже я вставляю свой исходный код.У меня есть базовый класс StoreDocument
и два типа документов StoreDocumentRw
и StoreDocumentWz
.
class StoreDocument {
String type
Date documentDate
static mapping = {
table '"StoreDocument"'
version false
id column:'"StoreDocumentID"', generator:'sequence', params:[sequence:'STORE_DOCUMENT_SEQ']
discriminator column: '"Type"'
documentDate column:'"DocumentDate"'
type column:'"Type"'
}
}
class StoreDocumentRw extends StoreDocument {
String rwSpecificData
static mapping = {
discriminator value: 'rw'
rwSpecificData column:'"RwSpecificData"'
}
}
class StoreDocumentWz extends StoreDocument {
String wzSpecificData
static mapping = {
discriminator value: 'wz'
wzSpecificData column:'"WzSpecificData"'
}
}
И когда я пытаюсь запустить приложение, я упоминал ранее org.hibernate.MappingException: Repeated column in mapping for entity: os.comida.StoreDocumentRw column: Type (should be mapped with insert="false" update="false")
Когда я добавляю type insertable: false, updateable: false
к StoreDocumentRw
отображению, он все тот же.
Когда я добавляю type insertable: false, updateable: false
к StoreDocument
отображению, это еще хуже:
ERROR hbm2ddl.SchemaExport - Unsuccessful: create table COMIDA2."StoreDocument" ("StoreDocumentID" number(19,0) not null, "DocumentDate" timestamp not null, "Type" varchar2(255 char), "Type" varchar2(-1 char) not null, "WzSpecificData" varchar2(255 char), "RwSpecificData" varchar2(255 char), primary key ("StoreDocumentID"))
ERROR hbm2ddl.SchemaExport - ORA-00957: duplicate column name
Так что я не знаю, куда мне поместить эту вставляемую / обновляемую вещь, чтобы она работала,Я использую Grails 2.0.0 и Oracle 10g.Кто-нибудь может сказать мне, что не так с моим кодом?
Решение:
Мое отображение в StoreDocument
было неверным.Достаточно вырезать String type
и type column:'"Type"'
и редактировать отображение дискриминатора следующим образом discriminator column:[name:'"Type"',length:50]
, что в результате дает:
class StoreDocument {
Date documentDate
static mapping = {
table '"StoreDocument"'
version false
id column:'"StoreDocumentID"', generator:'sequence', params:[sequence:'STORE_DOCUMENT_SEQ']
discriminator column:[name:'"Type"',length:50]
documentDate column:'"DocumentDate"'
}
}