这里有两个实体类Conference(会议)和User(用户)
package com.koala.model;
import java.sql.Date;
import java.util.Set;
public class Conference {
private int conferenceId;
private String theme;
private Date startTime;
private Date stopTime;
private User applicant;
private Set<User> optionalMan;
private Set<User> requiredMan;
public int getConferenceId() {
return conferenceId;
}
public void setConferenceId(int conferenceId) {
this.conferenceId = conferenceId;
}
public String getTheme() {
return theme;
}
public void setTheme(String theme) {
this.theme = theme;
}
public Date getStartTime() {
return startTime;
}
public void setStartTime(Date startTime) {
this.startTime = startTime;
}
public Date getStopTime() {
return stopTime;
}
public void setStopTime(Date stopTime) {
this.stopTime = stopTime;
}
public User getApplicant() {
return applicant;
}
public void setApplicant(User applicant) {
this.applicant = applicant;
}
public Set<User> getOptionalMan() {
return optionalMan;
}
public void setOptionalMan(Set<User> optionalMan) {
this.optionalMan = optionalMan;
}
public Set<User> getRequiredMan() {
return requiredMan;
}
public void setRequiredMan(Set<User> requiredMan) {
this.requiredMan = requiredMan;
}
}
package com.koala.model;
public class User {
private int userId;
private String userName;
private String userPassword;
private int roleId;
private int isDeleted;
public int getIsDeleted() {
return isDeleted;
}
public void setIsDeleted(int isDeleted) {
this.isDeleted = isDeleted;
}
public int getRoleId() {
return roleId;
}
public void setRoleId(int roleId) {
this.roleId = roleId;
}
public int getUserId() {
return userId;
}
public void setUserId(int userId) {
this.userId = userId;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getUserPassword() {
return userPassword;
}
public void setUserPassword(String userPassword) {
this.userPassword = userPassword;
}
}
另外有四张表
1、conference(会议表)
字段 | 类型 | 说明 |
conferenceid | int | 主键,自增1 |
theme | varchar(80) | not null |
applicantid | int | 发起人 |
starttime | Date | 开始时间 |
stoptime | Date | 结束时间 |
2、
user(用户表)
字段 | 类型 | 说明 |
userid | int | 主键、自增1 |
username | varchar(30) | 用户名 |
userpassword | varchar(30) | 密码 |
userid | int | 用户的角色 |
isdeleted | int | 是否删除 |
字段 | 类型 | 说明 |
id | int | 主键,自增1 |
conferenceid | int | |
userid | int |
conference_optionalman(必选人员表)
字段 | 类型 | 说明 |
id | int | 主键,自增1 |
conferenceid | int | |
userid | int |
所以这里的Hibernate映射文件应为:
<?xml version="1.0"?>
<!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.koala.model.Conference" table="conference">
<id name="conferenceId" column="conferenceid" type="int">
<generator class="increment"> <!-- 主键id的生成方式为自增 -->
</generator>
</id>
<property name="theme" column="theme" type="string" not-null="true"></property>
<property name="startTime" column="starttime" type="string"></property>
<property name="stopTime" column="stoptime" type="int"></property>
<many-to-one name="applicant" column="applicantid"/>
<set name="optionalMan" table="conference_optionalman">
<key column="conferenceid"/>
<many-to-many column="userid" class="com.koala.model.User"/>
</set>
<set name="requiredMan" table="conference_requiredman">
<key column="conferenceid"/>
<many-to-many column="userid" class="com.koala.model.User"/>
</set>
</class>
</hibernate-mapping>
这里的Conference与User对应的关系有:
体现在Conference.java中的applicant属性:Conference与User的多对一单向关系
体现在Conference.java中的optionalMan属性:conference与User的多对多单向关系
体现在Conference.java中的requiredMan属性:conference与User的多对多单向关系
说明:
<many-to-one name="applicant" column="applicantid"/>
这里的column属性值为conference表里的属性
<set name="optionalMan" table="conference_optionalman">
<key column="conferenceid"/>
<many-to-many column="userid" class="com.koala.model.User"/>
</set>
这里的table值为Conference与User的一张关联表,key标签里的column属性值为Conference对象在关联表里的字段,many-to-many标签里的column属性值为User(由上面的class属性值指定)对象在关联表里的字段。
这里的column属性值为conference表里的属性
总结到此,有什么不对之处,请读者之处,谢谢!