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

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语句和结果集,
    很方便。希望我的想法能给你一些帮助

    打赏 评论
  • devmiao 2016-01-23 15:20
    打赏 评论

相关推荐 更多相似问题