天天看点

hibernate 根据某一列数据去重

其实这种方式不局限于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的查出来就行。

条条大路通罗马,一定要发散思维。