hibernate自身多对多关联

本文详细介绍了在毕业设计中如何设计并实现好友关系系统,包括使用Java类User进行用户管理,通过多对多关联实现好友关系,以及在Hibernate框架下配置数据库映射。文中展示了User类的结构,包含id、username、name属性,以及friends和parent集合用于存储好友关系。同时,提供了生成的用户表和中间表的DDL语句。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近在做毕业设计,其中包含了好友关系的设计,经过几天的请教和查资料,终于有了个半成品的好友关系!
废话不多说,直接上代码:
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;


至此已基本成型,随项目持续更新...
由于笔者水平有限,如有错误,请联系我批评指正。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值