最近在做畢業設計,其中包含了好友關係的設計,經過幾天的請教和查資料,終於有了個半成品的好友關係!
廢話不多說,直接上代碼:
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;
至此已基本成型,隨項目持續更新...
由於筆者水平有限,如有錯誤,請聯絡我批評指正。