程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程解疑 >> hibernate-Oracle 多對多 關聯 好友添加

hibernate-Oracle 多對多 關聯 好友添加

編輯:編程解疑
Oracle 多對多 關聯 好友添加

前兩天老師教了多對多,比如員工和項目之間,讓我想到了QQ好友關系的建立,但在其中遇到了問題。

圖片說明
如圖所示是我的用戶表和關系表和外鍵關系

圖片說明
這是我的實體類,在這裡我很糾結,用戶自己關聯自己,到底是應該建一個實體類還是兩個實體類 ,比如 用戶類和好友類 其中屬性大致相同 兩個多對多

圖片說明

圓圈圈出的地方我很糾結,還是覺定這麼寫

圖片說明

這是我Test類中的主要內容,大概是新建一個 “我” 然後在我的好友列表裡添加 新建的另外一個人

圖片說明

這是運行的結果,它在用戶列表裡更新了兩條記錄,但在關系表裡卻沒有建立關系。

我在想遇到這種 類似用戶好友添加的多對多關系該怎麼解決

最佳回答:


你好,這種情況使用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語句和結果集,
很方便。希望我的想法能給你一些幫助

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved