2017-06-09 16 views
0

如何在休眠狀態下從兩個表中生成單個對象?如何在休眠狀態下從兩個表中生成單個對象?

我有兩個表

  1. 問表
  2. 選項表
 
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對象像下面

類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 

}

現在,我如何創建一個QuestionAndOptions對象使用休眠?

現在,我如何創建一個使用Hibernate的QuestionAndOptions對象列表?

任何想法,我應該這樣做?

+0

您使用的是哪個版本的hibernate? – asdasdsdf

+0

@AlexMalinovskiy我正在使用hibernate 3.x – santosh

回答

0

根據提供的表格圖我可以看到問題表和選項表之間的關係是一對多關係。因此,對於你的情況下,對象將是繼:

@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 
} 
+0

謝謝! 我理解你的想法。 我知道如何通過hibernate中的一對多映射持久化這些對象。 但我不知道如何使用休眠從數據庫檢索這些對象。 我想要顯示這些問題和選項作爲一個表在JSP – santosh

+0

,所以爲了通過ID檢索特定的問題,你可以使用以下方法從會話工廠 - 'sessionFactory.getCurrentSession()。load(Question.class, )'。 – asdasdsdf

+0

當我按照你的建議加載問題類時,我需要選項對象和問題對象。那可能嗎 ? – santosh

0

從你的表結構,它看起來像QuestionId是選項表的外鍵和有問題和選項之間的一個一對多的關係。休眠類可以如下 -

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

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

您提到的QuestionAndOptions結構可能有點難以維護。你顯然可以有一些代碼來將檢索到的hibernate對象轉換成你想要的結構。

相關問題