我有包含两个实体的地图的实体。 第一个是问题类是关键。作为答案类的第二个实体是一个值。
这是实体代码:
@Entity
public class SurveyForm {
@OneToMany
public Map<SurveyFormQuestion, SurveyFormAnswer> questionAndAnswer;
}
JPA / Hibernates生成两个MySql表:
首先: SurveyForm ,这是一个空洞的事实。
第二名: SurveyForm_SurveyFormAnswer ,如下所示:
SurveyForm_id bigint(20) SurveyForm -> id
questionAndAnswer_id bigint(20) SurveyFormAnswer -> id
questionAndAnswer_KEY bigint(20) SurveyFormQuestion -> id
我想以某种方式声明表格的名称: SurveyForm_SurveyFormAnswer 的列,而不是
questionAndAnswer_id
我希望:answer
questionAndAnswer_KEY
我希望:question
我的问题是:
这是否可以通过JPA/Hiberate
以及如何做到这一点。
请帮忙
EDIT 为了澄清,我在这里发布了工作解决方案:
@Entity
public class SurveyForm {
@OneToMany
@MapKeyJoinColumn(name = "question_id")
@JoinTable(joinColumns=@JoinColumn(name="answer_id"))
public Map<SurveyFormQuestion, SurveyFormAnswer> questionAndAnswer;
}
答案 0 :(得分:1)
您可以使用@MapKeyJoinColumn
和@JoinColumn
:
@Entity
public class SurveyForm {
@OneToMany
@MapKeyJoinColumn(name = "question")
@JoinTable(joinColumns = @JoinColumn(name="answer"))
public Map<SurveyFormQuestion, SurveyFormAnswer> questionAndAnswer;
}
答案 1 :(得分:-1)
我的代码不是100%,但如果您希望使用JPA命名自定义表,则可以使用@Table
和@Column
注释指定它们,例如:< / p>
@Entity
@Table(name = "SurveyFormQuestion")
public class SurveyFormQuestion{
@Column(name = "question")
public String question;
}
我希望这会有所帮助并回答你的问题,试着稍微解决一下。