如何在hibernate中从两个表生成单个对象?

时间:2017-06-09 09:04:54

标签: java hibernate

如何在hibernate中从两个表生成单个对象?

我有两张桌子

  1. 问题表
  2. 选项表
  3. Question table
    ----------------
    questionId | question 
    --------------------
     1         | who invented java ?
     2         | who invented computer ?
    
    
     Options table
     --------------
    
     OptionId | option |questionId
     ------------------------------
      1       | santos | 1
      2       | james  | 1
      3       | jashuwa| 1
      4       | jhon   | 1
      5       | charles| 2
      6       | ram    | 2
      7       | raj    | 2
      8       | rohit  | 2
    

    现在,我有一个像下面这样的VO对象

    class QuestionAndOptions {

    String questionId;
    String question;
    Sting option1Id;
    String option1;
    Sting option2Id;
    String option2;
    Sting option3Id;
    String option3;
    Sting option4Id;
    String option4;
    
    //getter and setter methods
    

    }

    现在,如何使用hibernate创建QuestionAndOptions对象?

    现在,如何使用hibernate创建QuestionAndOptions对象列表?

    知道我应该怎么做?

2 个答案:

答案 0 :(得分:0)

根据提供的表格图,我可以看到Question表和Options表之间的关系是一对多的。因此,对于您的案例,对象将遵循:

@Table(name="QUESTION")
public class Question{
    @Id
    @Column(...)
    private Long questionId;
    @Column(...)
    private String questionText;
    @OneToMany(fetch = FetchType.LAZY, mappedBy = "question")
    private List<Option> options
//getters and setters
}

@Table(name="OPTION")
public class Option{
    @Id
    @Column(...)
    private Long optionId;
    @Column(...)
    private String optionText;
    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "QUESTION_ID", nullable = false)
    private Question question;
    //getters and setters
}

答案 1 :(得分:0)

从表结构看,QuestionId是Options表中的外键,Question和options之间存在一对多的关系。用于此的Hibernate类可以如下 -

class Option{
    String optionId;
    String option;
    Question question;
} 

class Question{
    String questionId;
    String question;
    Set<Option> options;
}

您提到的QuestionAndOptions结构可能有点难以维护。显然,您可以使用一些代码将检索到的hibernate对象转换为您希望的结构。