前兩天老師教了多對多,比如員工和項目之間,讓我想到了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語句和結果集,
很方便。希望我的想法能給你一些幫助