Hibernate 映射问题,要多少分都可以

小弟初学Hibernate,画了一张实体类图,但是不知道怎么配置映射文件。本来有还有很多类的,现在就附上5类,希望热心人能解答User,Student和Course我就想... 小弟初学Hibernate ,画了一张实体类图,但是不知道怎么配置映射文件。
本来有还有很多类的,现在就附上5类,希望热心人能解答
User,Student 和Course 我就想知道这3个表怎么映射的,希望大虾指点
展开
 我来答
65288664
2009-10-27 · TA获得超过952个赞
知道小有建树答主
回答量:2359
采纳率:0%
帮助的人:1099万
展开全部

User类:

package com.test.model;

import java.sql.Date;

public class User {

 protected String id;

 protected String username;

 protected String password;

 protected String realName;

 protected Date birth;

 protected Date regTime;

 setter&&getter

}

Student类:

package com.test.model;

import java.util.HashSet;

import java.util.Set;

public class Student extends User {

 private String studentNo;

 private String major;

 private Set<Course> courses = new HashSet<Course>();

 setter&&getter

}

Teacher类:

package com.test.model;

public class Teacher extends User {

 private String teacherNo;

 private String specialty;

 private Course course;

 setter&&getter

}

Course类:

package com.test.model;

import java.util.HashSet;

import java.util.Set;

public class Course {

 private String id;

 private String description;

 private String courseName;

 private Set<Student> students = new HashSet<Student>();

 private Teacher teacher;

 setter&&getter

}

User.hbm.xml映射文件:

<?xml version="1.0" encoding="ISO-8859-1"?>

<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd";>

<hibernate-mapping>

  <class name="com.test.model.User" table="user">

    <id name="id">

      <generator class="uuid"/>

    </id>

    <property name="username" length="16" not-null="true"></property>

 <property name="password" length="16" not-null="true"></property>

 <property name="realName" length="16" not-null="true"></property>

    <property name="birth" not-null="true"></property>

    <property name="regTime" not-null="true"></property>

    <joined-subclass name="com.test.model.Teacher" table="teacher">

     <key column="teacherNo"></key>

     <property name="specialty" length="20"></property>

     <one-to-one name="course"></one-to-one>

    </joined-subclass>

    <joined-subclass name="com.test.model.Student" table="student">

     <key column="studentNo"></key>

     <property name="major" length="20"></property>

     <set name="courses" table="student_course">

      <key column="studentNo"></key>

      <many-to-many class="com.test.model.Course" column="courseId"></many-to-many>

     </set>

    </joined-subclass>

    <joined-subclass name="com.test.model.Administrator" table="administrator">

     <key column="id"></key>

    </joined-subclass>

  </class>

</hibernate-mapping>

Course.hbm.xml映射文件:

<?xml version="1.0" encoding="ISO-8859-1"?>

<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd";>

<hibernate-mapping>

 <class name="com.test.model.Course" table="course">

  <id name="id">

   <generator class="foreign">

    <param name="property">teacher</param>

    </generator >

  </id>

  <property name="description" length="100" not-null="true"></property>

  <property name="courseName" length="16" not-null="true"></property>

  <set name="students" table="student_course">

   <key column="courseId"></key>

   <many-to-many class="com.test.model.Student" column="studentNo"></many-to-many>

  </set>

  <one-to-one name="teacher" constrained="true"></one-to-one>

 </class>

</hibernate-mapping>

Student---Course: many-to-many

Teacher--Course:one-to-one主键关联

Storm代理
2023-07-25 广告
StormProxies是全球大数据IP资源服务商,其住宅代理网络由真实的家庭住宅IP组成,可为企业或个人提供满足各种场景的代理产品。点击免费测试(注册即送1G流量)StormProxies有哪些优势?1、IP+端口提取形式,不限带宽,IP... 点击进入详情页
本回答由Storm代理提供
boogood
2009-10-27 · TA获得超过329个赞
知道小有建树答主
回答量:360
采纳率:0%
帮助的人:161万
展开全部
1,Student和Course是m:n的关系。Student类再加一个Course类型的属性course,Course类中再加一个Student类型的属性student;
2,你图中,Teacher和Course是1:1的关系。Teacher类再加一个int id、Course类型的属性course,Course类中再加一个Teacher类型的属性teacher;(个人认为Course为主表,Teacher为从表比较好)
3,Teacher.hbm.xml文件:<hibernate-mapping package="test.hibernate.domain">

<class name="Teacher">
<id name="id" column="id">
<generator class="foreign">
<param name="property">course</param>
</generator>
</id>
<property name="TeacherNo" column="TeacherNo"/>
<one-to-one name="course" />
</class>

4,course.hbm.xml文件:<hibernate-mapping package="test.hibernate.domain">

<class name="Course">
<id name="id" column="id">
<generator class="native"/>
</id>
<property name="CourseName"/>
<property name="Description"/>
<one-to-one name="teacher"/>
</class>

</hibernate-mapping>

其他的类似。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友6e3420795
2009-10-27 · TA获得超过210个赞
知道答主
回答量:111
采纳率:0%
帮助的人:0
展开全部
我不回答了 看在楼上写那么多的份上,还是给他分吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式