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

问题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为“红色”的数据的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值