Hibernate多对多自身关联的例子代码

背景说明:论坛中每个用户(Admin类)有多个好友,每个好友,可以是多个用户的好友。是表自身多对多的关系。
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]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值