У меня есть две таблицы:Hibernate один ко многим картографирования
<class name="Content" table="language_content" lazy="false">
<composite-id>
<key-property name="contentID" column="contentID"/>
<key-property name="languageID" column="languageID"/>
</composite-id>
<property name="Content" column="Content" />
</class>
и
<class name="SecretQuestion" table="secretquestions" lazy="true">
<id name="questionID" type="integer" column="QuestionID">
<generator class="increment"></generator>
</id>
<property name="question" column="Question"/>
<property name="isUsing" column="IsUsing"/>
<bag name="contents" inverse="true" cascade="all,delete-orphan">
<key column="question" />
<one-to-many class="Content" />
</bag>
</class>
Я пытаюсь отобразить свойство "вопрос" из SecretQuestion свойству "ContentID" Контента, но исключение Eclipse:
org.hibernate.exception.SQLGrammarException: could not initialize a collection: [com.sms.model.entity.SecretQuestion.contents#1]
Если я заменить <key column="question" />
с <key column="contentID" />
, он может работать, но отображение неправильных данных (на самом деле, насколько я вижу, он отображает QuestionID с ContentID Контента)
Кто знает, как сделать то, что я пытаясь достичь здесь?
Спасибо.
UPDATE
Окей, после изменения, как сказал Паскаль, вот новая ошибка:
javax.servlet.ServletException: org.hibernate.MappingException: Foreign key (FKB65C9692FCD05581:language_content [contentID,languageID])) must have same number of columns as the referenced primary key (secretquestions [QuestionID])
Эта ошибка означает, что я должен иметь составной первичный ключ для secretquestions таблицы, которые я надеваю» т хотят :(
UPDATE
Я ж плохо дать пример, чтобы яснее, что я пытаюсь сделать:
Table SecretQuestion
questionID* question answer
1 4 a
2 5 a
3 6 a
Table Content
contentID* languageID* content
1 1 a
1 2 b
2 1 c
2 2 d
3 1 e
3 2 f
4 1 g
4 2 h
5 1 i
5 2 j
6 1 k
6 2 l
Теперь я хочу, чтобы отобразить вопрос 4, 5, 6 к содержимому ID 4, 5, 6.
Будет проверять это, но позже ... –