火焰小能猫 2016-01-23 10:41 采纳率: 20%
浏览 1774
已采纳

Oracle 多对多 关联 好友添加

前两天老师教了多对多,比如员工和项目之间,让我想到了QQ好友关系的建立,但在其中遇到了问题。

图片说明
如图所示是我的用户表和关系表和外键关系

图片说明
这是我的实体类,在这里我很纠结,用户自己关联自己,到底是应该建一个实体类还是两个实体类 ,比如 用户类和好友类 其中属性大致相同 两个多对多

图片说明

圆圈圈出的地方我很纠结,还是觉定这么写

图片说明

这是我Test类中的主要内容,大概是新建一个 “我” 然后在我的好友列表里添加 新建的另外一个人

图片说明

这是运行的结果,它在用户列表里更新了两条记录,但在关系表里却没有建立关系。

我在想遇到这种 类似用户好友添加的多对多关系该怎么解决

  • 写回答

2条回答

  • Preshine1 2016-01-24 06:03
    关注

    你好,这种情况使用hibernate多对多来做的话不好配置且并不是很通用,因为它是单表的自身多对多,并不像普通的那种 学生表 和 科目表那样的
    多对多。这时候你可以建立一个一对多的关系,建立一个用户表,一个好友表,用户对应一方,好友对应多的一方,好友表对应的Entity通过联合主键
    完成。图片说明,对应的主键是图片说明图片说明,这些是Friends
    的POJO和hbm.xml配置,用户表只需要userId、userName,userText等属性,不需要在关联其他的属性了,就是单纯的单表的操作,当你添加用户的
    时候就是往user表里面插入数据,添加好友的时候,测试时候可以自己new 一个Friends对象来插入数据了,如果要查询某个用户的所有好友的话则这样
    select f.id.users_1 from Firends f where f.id.users.userid=?_ 的HQL语句来查询。
    这样的话在查询某个用户的时候查询语句就不会闲的很臃肿,因为User表对应的POJO实现类和别的实体并无交集。如果你用过Mybatis的话,你就会
    觉得这些关系映射的都让人想死的心都有,同理你的这种需求在Mybatis中很容易就可以实现,因为Mybatis里面你可以自己写Sql语句和结果集,
    很方便。希望我的想法能给你一些帮助

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 本题的答案是不是有问题
  • ¥15 关于#r语言#的问题:(svydesign)为什么在一个大的数据集中抽取了一个小数据集
  • ¥15 C++使用Gunplot
  • ¥15 这个电路是如何实现路灯控制器的,原理是什么,怎么求解灯亮起后熄灭的时间如图?
  • ¥15 matlab数字图像处理频率域滤波
  • ¥15 在abaqus做了二维正交切削模型,给刀具添加了超声振动条件后输出切削力为什么比普通切削增大这么多
  • ¥15 ELGamal和paillier计算效率谁快?
  • ¥15 蓝桥杯单片机第十三届第一场,整点继电器吸合,5s后断开出现了问题
  • ¥15 file converter 转换格式失败 报错 Error marking filters as finished,如何解决?
  • ¥15 Arcgis相交分析无法绘制一个或多个图形