关闭

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

标签: hibernate多对多的问题
340人阅读 评论(0) 收藏 举报
分类:
问题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为“红色”的数据的。
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:6572次
    • 积分:237
    • 等级:
    • 排名:千里之外
    • 原创:19篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章存档
    姚凯亮个人专栏

    姚凯亮,大学毕业,既是一个终点,更是一个起点,步入社会的新起点,性格比较开朗,喜欢数据库管理/DBA和编程等。我自己熟悉使用RMAN对数据库进行备份与恢复,以及运用备份脚本进行自动备份;熟悉使用AWR工具,对数据库做性能调优等。然后自己喜欢祛痘产品,经常看一些祛痘产品排行榜10强。还有呢,我对于这些祛痘产品排行榜听感兴趣的。最后,我也会自学php、搭建DataGuard等知识的哦。