其實這種方式不局限于hibernate
problem:
項目中遇到好幾次這種問題,需要根據某個字段去重,也就是查出來的某個字段必須的值必須都是unique的。
因為sql去重必須是整條資料所有字段完全相同才能去重,是以無法直接通過distinct根據某一列去重。
Solution:
給這個表添加一個辨別列,表示某條資料能夠代表一組資料,在插入資料的時候可以判斷一下這個值是否可以作為辨別列,可以的話則設定為true,否則false,之後在查詢的時候可以加上這個條件,那麼查出來的效果就相當于根據某一列去重。
“example: ”
table:
采購商 | 供應商 | 商品 |
---|---|---|
采購商1 | 供應商1 | goods1 |
采購商1 | 供應商1 | goods3 |
采購商1 | 供應商1 | goods4 |
采購商1 | 供應商2 | goods5 |
采購商需要查詢與自己綁定關系的供應商,這個時候需要根據供應商列進行去重,是以可以加一個辨別列,當采購商跟這個供應商第一次綁定關系的時候把這個辨別列設定true
采購商 | 供應商 | 商品 | 是否辨別列 |
---|---|---|---|
采購商1 | 供應商1 | goods1 | true |
采購商1 | 供應商1 | goods3 | false |
采購商1 | 供應商1 | goods4 | false |
采購商1 | 供應商2 | goods5 | true |
當查詢的時候把辨別列為true的查出來就行。
條條大路通羅馬,一定要發散思維。