背景说明:论坛中每个用户(Admin类)有多个好友,每个好友,可以是多个用户的好友。是表自身多对多的关系。
Admin类代码:
CREATE TABLE `friendrelation` (
`OwenerId` int(11) NOT NULL default '0',
`FriendId` int(11) NOT NULL default '0',
PRIMARY KEY (`OwenerId`,`FriendId`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8
admin类的 hibernate文件Admin.hbm.xml内容(注释中有简单说明):
参考:
[url]http://topic.youkuaiyun.com/u/20080516/11/c86b95b1-8a09-43e6-96cd-8058f051bfe4.html[/url]
Admin类代码:
package com.soonj.entity;
import java.util.HashSet;
import java.util.Set;
public class Admin {
private Integer aid;//
private String adminName;//admin's name--unique
private String password;//admin's password
private String authDay;//authorize day
private Set<Admin> friends = new HashSet<Admin>();
private Set<AdminMessage> messages = new HashSet<AdminMessage>();
public void addFriend(Admin friend){
friends.add(friend);
}
public void addMessage(AdminMessage message){
messages.add(message);
message.setBelonger(this);
}
public Set<Admin> getFriends() {
return friends;
}
public void setFriends(Set<Admin> friends) {
this.friends = friends;
}
public String getAdminName() {
return adminName;
}
public void setAdminName(String adminName) {
this.adminName = adminName;
}
public Integer getAid() {
return aid;
}
public void setAid(Integer aid) {
this.aid = aid;
}
public String getAuthDay() {
return authDay;
}
public void setAuthDay(String authDay) {
this.authDay = authDay;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public Set<AdminMessage> getMessages() {
return messages;
}
public void setMessages(Set<AdminMessage> messages) {
this.messages = messages;
}
}
CREATE TABLE `friendrelation` (
`OwenerId` int(11) NOT NULL default '0',
`FriendId` int(11) NOT NULL default '0',
PRIMARY KEY (`OwenerId`,`FriendId`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8
admin类的 hibernate文件Admin.hbm.xml内容(注释中有简单说明):
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.soonj.entity">
<class name="Admin" table="admins">
<id name="aid" column="aid" type="java.lang.Integer">
<generator class="increment"></generator>
</id>
<property name="adminName" column="adminName" not-null="true" unique="true"></property>
<property name="password" column="password" not-null="true"></property>
<property name="authDay" column="authDay" not-null="true"></property>
<set name="friends" table="friendrelation" cascade="save-update" lazy="false" inverse="false">
<key column="OwenerId"></key><!-- 中间表第一个字段 -->
<many-to-many class="Admin" column="FriendId"/><!-- 中间表第二个字段 -->
</set>
<set name="messages" cascade="save-update" lazy="false" inverse="true">
<key column="mfid"></key>
<one-to-many class="AdminMessage"/>
</set>
</class>
</hibernate-mapping>
参考:
[url]http://topic.youkuaiyun.com/u/20080516/11/c86b95b1-8a09-43e6-96cd-8058f051bfe4.html[/url]