【发布时间】:2015-12-10 14:03:30
【问题描述】:
如何映射复合字段中的一列?
我有两个表 Questions 和 Question_options。
CREATE TABLE `question` (
`question_id` smallint(5) unsigned NOT NULL AUTO_INCREMENT,
`question` varchar(500) NOT NULL,
PRIMARY KEY (`question_id`)
) ENGINE=InnoDB AUTO_INCREMENT=501 DEFAULT CHARSET=utf8;
CREATE TABLE `question_options` (
`question_id` smallint(5) unsigned NOT NULL,
`option_id` varchar(3) NOT NULL,
`option_description` varchar(500) NOT NULL,
PRIMARY KEY (`question_id`, `option_id`),
KEY `idx_fk_op_question_id` (`question_id`),
KEY `idx_fk_op_option_id` (`option_id`),
CONSTRAINT `fk_op_question_id` FOREIGN KEY (`question_id`) REFERENCES `question` (`question_id`) ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
在 Question.java 中:
@JoinColumn(name = "question_id", nullable = false)
private List<QuestionOption> questionOptions;
在 QuestionOption.java 中
@EmbeddedId
private QuestionOptionPK id;
在 QuestionOptionPK.java 中
@Column(name="question_id", insertable=true, updatable=false, unique=true, nullable=false)
private long questionId;
@Column(name="option_id", insertable=true, updatable=false, unique=true, nullable=false, length=3)
private String optionId;
在 Question.java 中,我指的是复合键(QuestionOptionPK)的字段之一是 questionId。
但我收到这样的错误:
严重:Web 应用程序 [/SpringRestCrud] 中的 Servlet [mvc-dispatcher] 引发 load() 异常 org.hibernate.MappingException:实体映射中的重复列:com.mobily.model.QuestionOption 列:question_id(应使用 insert="false" update="false" 进行映射)
【问题讨论】:
标签: spring hibernate jpa jpa-2.0