最近在做毕业设计,其中包含了好友关系的设计,经过几天的请教和查资料,终于有了个半成品的好友关系!
废话不多说,直接上代码:
一个User可以添加多个User为好友,并且一个User可以被多个User添加为好友。在Hibernate中,可以用自身多对多关联实现。配置文件如下:
生成的用户表(User):
中间表friends:
至此已基本成型,随项目持续更新...
由于笔者水平有限,如有错误,请联系我批评指正。
废话不多说,直接上代码:
public class User {
private int id;
private String username;
private String name;
private Set<User> friends = new HashSet<User>();
private Set<User> parent = new HashSet<User>();
getter/setter 方法略
}
一个User可以添加多个User为好友,并且一个User可以被多个User添加为好友。在Hibernate中,可以用自身多对多关联实现。配置文件如下:
<?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>
<class name="User">
<id name="id" type="java.lang.Integer">
<generator class="native"></generator>
</id>
<property name="username" type="string"></property>
<property name="name" type="string"></property>
<set name="friends" inverse="false" cascade="all">
<key>
<column name="userid"></column>
</key>
<many-to-many class="User" column="friendid"></many-to-many>
</set>
</class>
</hibernate-mapping>
生成的用户表(User):
CREATE TABLE `user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(255) DEFAULT NULL,
`name` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=gbk;
中间表friends:
CREATE TABLE `friends` (
`userid` int(11) NOT NULL,
`friendid` int(11) NOT NULL,
PRIMARY KEY (`userid`,`friendid`),
KEY `FKDC3B4995E9C283D0` (`friendid`),
KEY `FKDC3B4995CBFCDBD` (`userid`),
CONSTRAINT `FKDC3B4995CBFCDBD` FOREIGN KEY (`userid`) REFERENCES `user` (`id`),
CONSTRAINT `FKDC3B4995E9C283D0` FOREIGN KEY (`friendid`) REFERENCES `user` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=gbk;
至此已基本成型,随项目持续更新...
由于笔者水平有限,如有错误,请联系我批评指正。