hibernate多对多的问题和sql server数据库update的问题

原创 2015年11月17日 19:07:50
问题1:hibernate多对多问题,我现在有一个系统,用户和用户之间可以互相添加关注,就是类似于好友关系,用户的实体类和自己这个实体类是多对多的关系,这个应该怎么处理这个关系。
回答:
这种情况不能直接用ManyToMany多对多。
ManyToMany只适合于两者只有基本的外键对应关系,也就是两者的中间关系表没有额外的有效数据。
你这个有额外的isReaded数据。
这个字段应该要放到User和Message的中间关系表中去。
如果放到Message里,那么一条Message可以发给多个User,如果有些User读了,有些User没读,那Message中这个isReaded标志就没法设置了。
所以必须放到关系表中,但这样就不能直接用多对多了,因为关系表中这个字段就没法映射了。
这种情况要把ManyToMany,拆成两组ManyToOne。
由于中间关系表也有有效数据,所以它也要映射成一个PO类,比如映射为UserMsg类;那么一个User就对应多个UserMsg,所以User与它是OneToMany;
同样,一个Message也对应多个UserMsg,所以Message与它也是OneToMany;
你在User和Message中分别都映射一个OneToMany的UserMsg,并在UserMsg中把User和Message都映射为ManyToOne,isReaded字段在UserMsg中。
这样,就把多对多拆成两组一对多了。
补充:也就是说再添加一个实体类UserMsg用来映射用户之间的关系,然后UserMsg和User之间使用ManyToOne,UserMsg里面包含两个User集合属性,这两个属性都是和User是OneToMany。


问题2:sql server数据库 update P set COLOR='蓝色' where COLOR='红色' 怎么会修改不成功 结果显示0行受影响,sql查select * from  P  where COLOR='红色'也没有数据,得怎么设置?
回答:
P表名对应的数据库对么,别用了别的库,查不到数据
继续问:是对应的,但是就是查不到
补充:P的表里面,本来就没有color 为‘’红色的‘’数据。这么说懂么。就行我想把手里的苹果都换成句子,但是我手里一个苹果都没有,怎么换句子。返回的结果也是告诉你你手里没有苹果,一个都没换成。就这意思
继续问:我知道你的意思,但是我想说的是P表里面是有Color为“红色”的数据的。

Hibernate关于一对多 多对一 多对多关联关系的设置

写这篇文章主要是介绍一下hibernate关于一对多 多对一 多对多关联关系的设置。 看似三个问题解决起来实则是2个问题,因为多对一和一对多的处理是反向的。 下面我们先从一对多入手,对于一对多我们从两...
  • c1523456
  • c1523456
  • 2017年05月28日 00:15
  • 299

Sql 多对多关系

一个多对多关系的典型设计就是图书表和
  • X_Craft
  • X_Craft
  • 2014年10月14日 23:16
  • 1755

数据库多对多关系的表如何采用左连接查询

例如病人表(patient)和保险公司表(insurance)是一个多对多的关系,它们的关系通过中间表(insure)来体现。中间表(insure)储存病人的主键id和保险公司的主键company 那...
  • wwwyuanliang10000
  • wwwyuanliang10000
  • 2014年03月19日 15:24
  • 4569

[JAVA]Hibernate 有选择性的更新--控制insert和update语句

Hibernate 有选择性的更新--控制insert和update语句   项目请情景:Hibernate 更新部分字段。   项目中Hibernate更新记录时,不想更新所有字段怎么办?如果更...
  • u012920100
  • u012920100
  • 2013年11月22日 13:24
  • 1541

数据库中多对多的关系设计

数据库设计多对多关系的几种形态   前言:多对多关系至少需要3个表,我们把一个表叫做主表,一个叫做关系表,另外一个叫做字典表或者副表(字典表是纪录比较少,而且基本稳定的,例如:版块名称;副表是内容比较...
  • xianda9133
  • xianda9133
  • 2016年01月27日 23:16
  • 1596

Hibernate关系映射之多对多映射的两种方式

多对多关系##many-to-many 应用场景:不建议使用,建议拆解成两个“一对多”连接 关系定义(主控方): //xml映射方法 ...
  • fengfangyuan
  • fengfangyuan
  • 2016年12月16日 20:45
  • 191

数据库实体间多对多关系处理

数据库实体间多对多关系处理   数据库实体间有三种对应关系:一对一,一对多,多对多。 一对一关系示例:一个学生对应一个学生档案材料,或者每个人都有唯一的身份证编号。 一对多关系示例:一个学生只...
  • yunhaiC
  • yunhaiC
  • 2013年04月14日 10:30
  • 3104

SQL Server 数据库表多对多的处理

一般的,一对多,多对一,只需要做一个外键,在多的一方 做一个外键字段指向少的那方的主键。 这里多对多,不管怎么做主键,外键都不适合。 我们需要引入第三个表,(关系表),里面有三个字段,第一个是关系...
  • u012997311
  • u012997311
  • 2017年06月09日 13:02
  • 441

问题:Hibernate中数据始终不能更新? 这个问题整死我了!

问题:Hibernate中数据始终不能更新? 这个问题整死我了!解决:原来是XXX.hbm.xml中的属性配置问题,如:         name="name"        type="string...
  • pengchua
  • pengchua
  • 2007年07月20日 14:38
  • 1956

数据库表多对多的设计

先上问题!     现在有A、B、C三张表,A和B是一对多的关系,B和C是一对一的关系,C和B是一对多的关系,A和C是多对多的关系。问题:是否设计第四张表专门存放A、B、C的关系,还是把关系维护在B表...
  • yingfeng2oo8
  • yingfeng2oo8
  • 2016年03月15日 17:59
  • 1984
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:hibernate多对多的问题和sql server数据库update的问题
举报原因:
原因补充:

(最多只允许输入30个字)