其實(shí)這種方式不局限于hibernate
problem:
項(xiàng)目中遇到好幾次這種問題筹煮,需要根據(jù)某個(gè)字段去重谜诫,也就是查出來的某個(gè)字段必須的值必須都是unique的大猛。
因?yàn)閟ql去重必須是整條數(shù)據(jù)所有字段完全相同才能去重,所以無法直接通過distinct根據(jù)某一列去重渔呵。
Solution:
給這個(gè)表添加一個(gè)標(biāo)識(shí)列聚请,表示某條數(shù)據(jù)能夠代表一組數(shù)據(jù)荠雕,在插入數(shù)據(jù)的時(shí)候可以判斷一下這個(gè)值是否可以作為標(biāo)識(shí)列,可以的話則設(shè)置為true驶赏,否則false炸卑,之后在查詢的時(shí)候可以加上這個(gè)條件,那么查出來的效果就相當(dāng)于根據(jù)某一列去重煤傍。
“example: ”
table:
采購商 | 供應(yīng)商 | 商品 |
---|---|---|
采購商1 | 供應(yīng)商1 | goods1 |
采購商1 | 供應(yīng)商1 | goods3 |
采購商1 | 供應(yīng)商1 | goods4 |
采購商1 | 供應(yīng)商2 | goods5 |
采購商需要查詢與自己綁定關(guān)系的供應(yīng)商盖文,這個(gè)時(shí)候需要根據(jù)供應(yīng)商列進(jìn)行去重,所以可以加一個(gè)標(biāo)識(shí)列蚯姆,當(dāng)采購商跟這個(gè)供應(yīng)商第一次綁定關(guān)系的時(shí)候把這個(gè)標(biāo)識(shí)列設(shè)置true
采購商 | 供應(yīng)商 | 商品 | 是否標(biāo)識(shí)列 |
---|---|---|---|
采購商1 | 供應(yīng)商1 | goods1 | true |
采購商1 | 供應(yīng)商1 | goods3 | false |
采購商1 | 供應(yīng)商1 | goods4 | false |
采購商1 | 供應(yīng)商2 | goods5 | true |
當(dāng)查詢的時(shí)候把標(biāo)識(shí)列為true的查出來就行五续。
條條大路通羅馬,一定要發(fā)散思維龄恋。