Java 休眠一对多映射
我有两张桌子:Java 休眠一对多映射,java,hibernate,orm,mapping,one-to-many,Java,Hibernate,Orm,Mapping,One To Many,我有两张桌子: <class name="Content" table="language_content" lazy="false"> <composite-id> <key-property name="contentID" column="contentID"/> <key-property name="languageID" column="languageID"/>
<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>
如果我将
替换为
,它可以运行,但映射错误的数据(实际上,据我所见,它将questionID映射为Content的contentID)
有人知道我在这里要做什么吗
谢谢
更新
好的,按照Pascal所说的修改后,这里是新的错误:
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表设置一个复合主键,但我不希望:(
更新
我将举一个例子来说明我想做什么:
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。看起来这种方法无法工作,并且Hibernate不支持这种方法(内容表具有复合主键,而我只想将其映射到问题表中的一个字段)因此,我使用了一种变通方法,只将问题映射到contentID,并使用ContentGetter类,该类将根据languageID获取内容
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])
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