簡體   English   中英

使用JPA從Java映射對象自動生成的表的自定義列名稱

[英]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_idanswer
  • 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM