0 0

Hibernate20

有ExamPaper考卷类,对应EXAMPAPER表,有栏位 id name
Question题目类(放在题库中的题),对应QUESTION表,有栏位 id content type
ExamQuestion考题类(考卷上的题目),对应EXAMPAPER_QUESTION表,有栏位 id exampaper_id question_id score
题目分选择 填空 解答3个类型,我分别映射了ChoiceQuestion FillingQuestion ProcessQuestion 3个Question的子类,但我希望在ExamPaper类中取得此考卷所有的选择题或所有的填空题,该如何配置?或者是我的设计有问题,怎么修正?
问题补充:
谢谢wangxin0072000的回答,但你没明白我的意思,ExamQuestion是ExamPaper和Question的中间类,体现了考卷和题目的关系,我想知道怎样使ExamQuestion能够表现出Question的分类,即Question的子类ChoiceQuestion FillingQuestion ProcessQuestion分别对应ExamQuestion的子类ChoiceExamQuestion FillingExamQuestion ProcessExamQuestion,因为我想在ExamPaper类中加入方法getChoiceQuestions(),返回的是考卷中所有选择题。
问题补充:
嗯?意思是ExamPaper和Question的子类多对多关联,中间表为EXAMPAPER_QUESTION,因为我需要中间表的score 属性,所以再建一个ExamQuestion类与中间表对应,要从ExamPaper取出每题的得分,那么ExamPaper又要与ExamQuestion-对多关联,这样ExamPaper<-1---n->ExamQuestion<-m---1->Question,ExamPaper<-n---m->Question.是这样吗?这样配置不会有脏数据问题吗?


问题补充:
可能是设计的问题吧,你能帮我想个解决办法么?需求如下:
随机从题库产生考卷,考卷明细包括题型 总分 总得分 每题分数 每题得分.
问题补充:
对于maxwell的建议,那么如何配置以保证ExamQuestion和Question的type一一对应呢?
难道要每次都examQuestion.setType(“A”)?
2008年6月19日 08:17

5个答案 按时间排序 按投票排序

0 0

采纳的答案

首先,我认为没有必要建立ChoiceExamQuestion FillingExamQuestion ProcessExamQuestion这3类,因为这三个类的信息都是完全一样的。如果作为关系表,那么一个examquestion足够了。我的第二个xml示例

<class name="ExamPaper">   
 <id......>   
 .......   
 <!--下面这几行指明了ExamPaper类中的choiceQuestion属性关联的是ChoiceQuestion集合,而关联关系来自于examquestion表 -->
 <set name="choiceQuestion" table="ExamQuestion">   
  <key colum="exampaper_id"/>   
  <many-to-many column="question_id" class="ChoiceQuestion"/>   
 </set>   
 ......   
 ......   
</class> 

其次,在EamPaper类中有choiceQuestion属性。直接getChoiceQuestion就可以得到ChoiceQuestion的Set。
最后,如果你想得到ExamQuestion这个表中的数据那么建立一个实体bean和对应关系,就可以了,没有必要建3个。

2008年6月19日 11:24
0 0

在ExamQuestion中加一个column type 对于question表的 type 

仅仅是个人意见, 仅供参考。

2008年6月20日 17:23
0 0

每道考题的分数对与不同的考卷相同吗?如果相同就把score放到question里面。如果不同就单独建一个bean存放score(可以就关联ExamQuestion表)。其他的就没什么了。

2008年6月19日 16:38
0 0

基本就是这个意思。难点在于Question子类的配置,看我的第一个XML代码。

引用

要从ExamPaper取出每题的得分,那么ExamPaper又要与ExamQuestion-对多关联


这样,好像是比较麻烦,但是也没办法,因为一般中间关系表中只存两个表的主键,而你的score不应该存在这里。应该存在莫个bean中,但是这个你的业务逻辑设计方面的问题了,我就不了解了。

至于脏数据的问题,应该也不会有。但是hibernate的具体设置要看你的逻辑了。如果有问题最好看看hibernate reference。其中有详细的解答。

2008年6月19日 12:37
0 0

如果你已经建立好ChoiceQuestion FillingQuestion ProcessQuestion3个实体类。那么使用继承关系,使这三个类继承子Question。之后使用Hibernate的继承映射。这种映射可以保证多个实体类出自一个数据库表。配置如下。具体可以参考Hibernate reference。
最后Exampaper与Question建立多对多关系。我写出了大概的配置和代码,有可能有出入。你在改改。

<class name="Question" table="QUESTION">
 <id name=id type="long" column="ID">
  <generator class="native"/>
 </id>
 <discriminator column="type" type="sting"/>
 <property...>
  ......
 <subclass name="ChoiceQuestion" discriminatiotor-value="choice">
  <property...>
   ......
 <subclass name="FillingQuestion" discriminatiotor-value="filling">
  <property...>
   ......
 <subclass name="ProcessQuestion" discriminatiotor-value="process">
  <property...>
   ......

class ExamPaper {
  ....
 Set choiceQuestion=new HashSet();
 Set fillingQuestion=new HashSet();
 Set processQuestion=new HashSet();
}

<class name="ExamPaper">
 <id......>
 .......
 <set name="choiceQuestion" table="ExamQuestion">
  <key colum="exampaper_id"/>
  <many-to-many column="question_id" class="ChoiceQuestion"/>
 </set>
 ......
 ......
</class>


2008年6月19日 10:26

相关推荐

    hibernate jar包:hibernate-commons-annotations-4.0.1.Final.jar等

    Hibernate.jar包,Hibernate可以应用在任何使用JDBC的场合,包含 hibernate-commons-annotations-4.0.1.Final.jar hibernate-core-4.1.12.Final.jar hibernate-ehcache-4.1.12.Final.jar hibernate-entitymanager-...

    Hibernate入门到精通

    "Hibernate入门到精通" Hibernate 是一个基于Java的ORM(Object-Relational Mapping,对象关系映射)框架,它提供了一种简洁高效的方式来访问和操作关系数据库。下面是 Hibernate 的主要知识点: Hibernate 简介 ...

    hibernate jar包程序文件

    hibernate-commons-annotations-4.0.1.Final.jar hibernate-core-4.1.12.Final.jar hibernate-ehcache-4.1.12.Final.jar hibernate-entitymanager-4.1.12.Final.jar hibernate-jpa-2.0-api-1.0.1.Final.jar ...

    最新版本的Struts2+Spring4+Hibernate4框架整合

    项目原型:Struts2.3.16 + Spring4.1.1 + Hibernate4.3.6 二、 项目目的: 整合使用最新版本的三大框架(即Struts2、Spring4和Hibernate4),搭建项目架构原型。 项目架构原型:Struts2.3.16 + Spring4.1.1 + ...

    hibernate学习资料大全

    【hibernate学习资料大全】 Hibernate 是一个开源的对象关系映射(ORM)框架,它极大地简化了Java应用程序对数据库的操作。这个压缩包包含了丰富的Hibernate学习资源,旨在帮助开发者深入理解和熟练掌握这一强大的...

    Hibernate-extensions 完整安装包

    《Hibernate-Extensions全面指南》 Hibernate,作为Java领域中的一款著名对象关系映射(ORM)框架,极大地简化了数据库操作。然而,为了满足更复杂的业务需求,Hibernate还提供了丰富的扩展功能,这就是我们今天要...

    hibernate-release-4.1.4

    【描述】中的"hibernate的jar包"指的是Hibernate框架的运行库文件,这些JAR文件包含了Hibernate的所有核心API、实现和依赖库,如Hibernate Commons Annotations、Hibernate EntityManager、Hibernate Core等。...

    Hibernate Spatial 4 教程

    Hibernate Spatial 4 教程 Hibernate Spatial 是一个基于 Hibernate 或 JPA 的空间几何对象数据库操作框架,提供了实现空间几何对象数据库操作的方法和配置说明。 一、 Hibernate Spatial 4 简介 Hibernate ...

    hibernate基础jar包

    Hibernate是一个开源的对象关系映射(ORM)框架,它允许Java开发者使用面向对象的方式来操作数据库,极大地简化了数据访问层的编程工作。这个压缩包包含了Hibernate的基础jar包,这些jar文件是开发Hibernate应用所...

    HibernateTools-3.2.4

    HibernateTools是Java开发人员在使用Hibernate ORM框架时的有力辅助工具集,主要目的是为了提高开发效率,简化数据库操作。在HibernateTools 3.2.4版本中,它包含了一系列的特性与插件,以支持更便捷地进行对象关系...

    hibernate3全部jar包:hibernate3.jar.zip 下载

    Hibernate3 是一个强大的Java持久化框架,它允许开发者将数据库操作与业务逻辑解耦,使得应用程序的开发更为简便。这个“hibernate3全部jar包:hibernate3.jar.zip”包含了所有必要的库文件,方便用户一次性下载并...

    Hibernate3的依赖包

    Hibernate3是一个广泛使用的Java对象关系映射(ORM)框架,它允许开发者用面向对象的方式处理数据库操作,极大地简化了Java应用程序与数据库之间的交互。在这个"Hibernate3的依赖包"中,包含了运行Hibernate3应用...

    kingbaseV8 hibernate jdbc 驱动

    在Java开发环境中,与KingbaseV8数据库进行交互通常会用到Hibernate框架和JDBC驱动。 Hibernate是一个优秀的对象关系映射(ORM)框架,它简化了Java应用程序对数据库的操作,通过将Java对象与数据库表进行映射,...

    hibernate和MySQL的jar

    标题中的“hibernate和MySQL的jar”指的是Hibernate ORM框架与MySQL数据库之间的连接库。Hibernate是一种流行的Java对象关系映射(ORM)工具,它允许开发者使用面向对象的编程方式来操作数据库,而无需直接编写SQL...

    Hibernate 中文api 等学习资料

    标题"Hibernate 中文api 等学习资料"暗示了这是一组针对Hibernate ORM框架的中文学习资源,包括API文档和其他指南,旨在帮助用户更好地理解和使用Hibernate。 描述中的"hibernate orm框架api中文文档,学习资料,...

    hibernate.5.1.0.jar全部

    包含hibernate所有所需jar包还有一些其他包日志包、jpa支持包等: 列如:hibernate-core-5.1.0.Final.jar hibernate-ehcache-5.1.0.Final.jar hibernate-entitymanager-5.1.0.Final.jar hibernate-envers-5.1.0....

    hibernate2 升级为hibernate3的需要注意的事项

    ### Hibernate2 升级至 Hibernate3 的注意事项 #### 背景与目的 随着技术的发展,软件框架也在不断地更新迭代,以适应更多的需求并优化性能。Hibernate 作为一款流行的 Java 持久层框架,其从版本 2 升级到版本 3...

    Hibernate入门jar包

    Hibernate是一款强大的Java持久化框架,它简化了数据库与Java对象之间的交互,使开发者可以更加专注于业务逻辑而不是数据访问层的实现。本压缩包提供的是Hibernate入门所需的jar包,包括了Hibernate的核心库以及与之...

    hibernate4.3完整jar包

    Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端...

    hibernate3必要jar包

    Hibernate3 是一个非常重要的Java持久化框架,它允许开发者将对象模型与数据库关系模型进行映射,从而简化了数据存取的过程。这个压缩包“hibernate3必要jar包”显然是针对Hibernate3版本的,已经去除了冗余的库文件...

Global site tag (gtag.js) - Google Analytics