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

Java 如何在hibernate中从两个表生成单个对象?,java,hibernate,Java,Hibernate,如何在hibernate中从两个表生成单个对象 我有两张桌子 问题表 选项表 } 现在,如何使用hibernate创建QuestionAndOptions对象 现在,如何使用hibernate创建QuestionAndOptions对象列表 你知道我该怎么做吗?根据提供的表格图表,我可以看到问题表格和选项表格之间的关系是一对多的。因此,对于您的案例,对象将如下所示: @Table(name=“QUESTION”) 公开课问题{ @身份证 @列(…) 私人长问卷; @列(…) 私有字符串文本; @

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

我有两张桌子

  • 问题表
  • 选项表
  • }

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

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


    你知道我该怎么做吗?

    根据提供的表格图表,我可以看到问题表格和选项表格之间的关系是一对多的。因此,对于您的案例,对象将如下所示:

    @Table(name=“QUESTION”)
    公开课问题{
    @身份证
    @列(…)
    私人长问卷;
    @列(…)
    私有字符串文本;
    @OneToMany(fetch=FetchType.LAZY,mappedBy=“question”)
    私有列表选项
    //接球手和接球手
    }
    @表(name=“OPTION”)
    公共类选项{
    @身份证
    @列(…)
    私人长期权ID;
    @列(…)
    私有字符串optionText;
    @manytone(fetch=FetchType.LAZY)
    @JoinColumn(name=“QUESTION\u ID”,null=false)
    私人问题;
    //接球手和接球手
    }
    
    从您的表结构来看,QuestionId似乎是选项表中的外键,并且问题和选项之间存在一对多关系。这方面的Hibernate类可以如下所示-

    class Option{
        String optionId;
        String option;
        Question question;
    } 
    
    class Question{
        String questionId;
        String question;
        Set<Option> options;
    }
    
    类选项{
    字符串选项ID;
    字符串选项;
    问题;;
    } 
    课堂提问{
    字符串问号;
    字符串问题;
    设置选项;
    }
    

    您提到的问题和选项结构可能有点难以维护。显然,您可以使用一些代码将检索到的hibernate对象转换为所需的结构。

    您使用哪个版本的hibernate?@AlexMalinovskiy我正在使用hibernate 3.x谢谢!我理解你的想法。我知道如何在hibernate中通过一对多映射持久化这些对象。但我不知道如何使用hibernate从数据库中检索这些对象。我想在JSPso中将这些问题和选项显示为一个表,以便按ID检索特定的问题。您可以使用以下方法从会话工厂-
    sessionFactory.getCurrentSession().load(question.class,)
    。按照您的建议加载问题类时,我需要option对象和question对象。这可能吗?所以在我的方法中,如果您加载问题对象,那么与此问题相关的选项将被延迟加载。这意味着只有相关选项的ID可用,但当您开始遍历选项列表时,它们将被完全实例化。谢谢!我明白了。
    String questionId;
    String question;
    Sting option1Id;
    String option1;
    Sting option2Id;
    String option2;
    Sting option3Id;
    String option3;
    Sting option4Id;
    String option4;
    
    //getter and setter methods
    
    class Option{
        String optionId;
        String option;
        Question question;
    } 
    
    class Question{
        String questionId;
        String question;
        Set<Option> options;
    }