2 qq 29910567 qq_29910567 于 2016.01.23 18:41 提问

Oracle 多对多 关联 好友添加

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

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

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

图片说明

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

图片说明

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

图片说明

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

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

2个回答

PingZhi_6766
PingZhi_6766   2016.01.24 14: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
devmiao   Ds   Rxr 2016.01.23 23:20
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
ORACLE数据库设计 多对多关系
关于数据库两张表多对多的关系设计,之前以为多对多关系,只要两张表存在各自对方表的主键就行。而这种理解是错误的,总结如下。 数据库多对多表设计,假设使用主外键关系设计多对多表关系,会造成: 1、对一张表进行DML语句时,该表对应的外键会影响另外一张表的数据,产生级联删除问题; 2、因为是多对多的关系,会产生大量冗余数据; --假设以上2种都允许存在,系统凑合也还可用。致命一点是: 3、多对
Hibernate多对多关联添加及查询示例
Hibernate多对多关联添加及查询示例
Hibernate(七)实现多对多关联映射关系
直接以老师与学生的关系为例。在多对多关联关系中,其中一方都可通过Set保留另一方的所有信息,这样的关联是双向关联。在多对多关联关系中,也只能是双向关联。老师和学生分别对应一张表,通过一张有双方id的中间表来维护多对多的关联。
Java - 举一个多对多关联的例子,并说明如何实现多对多关联映射。
例如:商品和订单、学生和课程都是典型的多对多关系。可以在实体类上通过@ManyToMany注解配置多对多关联或者通过映射文件中的和标签配置多对多关联,但是实际项目开发中,很多时候都是将多对多关联映射转换成两个多对一关联映射来实现的。...
Mybatis 多对多关联表关联 如何插入关联表数据
很多时候我们会碰到这样一个需求,当前我有(用户)表和(角色)表,他们之间是多对多的关系,所以我们通常会创建一个关联表(用户_角色)表,现在我们有固定的角色,只需要添加用户即可,给用户指定角色,那我们怎么做呢,废话不多说了,下面给出思路:         表 :user   /   role   /   user_role  对应JavaBean如下: 用户表: public
Entity Framework多对多关联映射的实现
Entity Framework是微软官方提供的一个ORM解决方案,它有纯正的血统,比NHibernate更容易使用并且与现有其它官方框架配合更加密切。时代不断的在发展变化,记得10年前还是ADO(配合ASP)的天下,后来微软推出了ADO.NET,再后来推出了ADO.NET Entity Framework,可见微软在.NET与数据库交互领域的作为。下面我将以Entity Framework(简称
SSH框架下多对多关联关系表的管理中遇到的问题和解决办法
    在应用系统最常用的用户与角色管理中,存在多对多关系,一个用户可以拥有多个角色,一个角色可以拥有多个角色,一般设计三个表格,用户表,角色表,和用户-角色表,在用户bean中增加private Set roleSet=new HashSet();角色bean中增加private Set userSet=new HashSet();    user.hbm.xml中增加    casca
Mybatis 多对多表关联
中间表实现  下面的例子让新手看不错。可以改进的一点是           1、不必建立 关联对象实体,可以用map传递两个id进去           2、文章的resultMap 继承和 查询配置 比较清楚,可以借鉴         mybatis3.0添加了association和collection标签专门用于对多个相关实体类数据进行级联查询,但仍不支持多
hibernate多对多关系配置--增删改查
hibernate多对多关联配置--并实现增删改查          hibernate就不多介绍了,这里就直接上我项目中使用的例子做说明。          数据模型 这是项目中用户和用户组的数据模型er图草稿,具体的model对象字段就以项目中的为主了。 model类以及pojo接口,这里pojo接口用不上,大家测试的时候也可以去掉 package com.supre.m
Flask-SQLAlchemy 配置,处理对象-关系,一对多,多对多,
初始化和配置 ORM(Object Relational Mapper) 对象关系映射。指将面对对象得方法映射到数据库中的关系对象中。 Flask-SQLAlchemy是一个Flask扩展,能够支持多种数据库后台,我们可以不需要关心SQL的处理细节,操作数据库,一个基本关系对应一个类,而一个实体对应类的实例对象,通过调用方法操作数据库。Flask-SQLAlchemy有很完善的文