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的查出来就行。

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容