废话不多说,直接上代码:
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;
至此已基本成型,随项目持续更新...
由于笔者水平有限,如有错误,请联系我批评指正。