![](/img/trans.png)
[英]How to map a Java class property that is an object to a single JPA table column?
[英]Custom column names for auto generated table from java map object using JPA
我有Entity,其中包含兩個實體的地圖。 第一個是問題類,是關鍵。 作為答案類別的第二個實體是一個值。
這是實體代碼:
@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
以及如何做到這一點。
請幫忙
編輯只是為了澄清,我在這里發布工作解決方案:
@Entity
public class SurveyForm {
@OneToMany
@MapKeyJoinColumn(name = "question_id")
@JoinTable(joinColumns=@JoinColumn(name="answer_id"))
public Map<SurveyFormQuestion, SurveyFormAnswer> questionAndAnswer;
}
您可以使用@MapKeyJoinColumn
和@JoinColumn
:
@Entity
public class SurveyForm {
@OneToMany
@MapKeyJoinColumn(name = "question")
@JoinTable(joinColumns = @JoinColumn(name="answer"))
public Map<SurveyFormQuestion, SurveyFormAnswer> questionAndAnswer;
}
我的代碼不是100%,但是如果您希望使用JPA命名自定義表,則可以使用@Table
和@Column
批注指定它們,例如:
@Entity
@Table(name = "SurveyFormQuestion")
public class SurveyFormQuestion{
@Column(name = "question")
public String question;
}
希望這對您有所幫助,並回答您的問題,請嘗試解決。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.