如何解决ComboBox中同文本不同ID的重复值问题(SQL实现)
解决ComboBox重复文本显示问题
你的核心问题是当前SQL因为id不同,即使description相同,DISTINCT也会返回多条重复文本的记录。以下是两种可行的解决办法:
一、SQL层面去重(优先推荐)
通过GROUP BY按description分组,为每个唯一文本保留一个对应的id(比如取最小或最大的id,根据业务需求选择),修改后的SQL如下:
SELECT MIN(id) as id, description as text FROM engine WHERE description IS NOT NULL GROUP BY description
这样查询结果里每个description只会出现一次,同时保留了合法的id,能满足你依赖MappingRessource.properties生成SQL的逻辑要求。
二、业务代码层去重
如果无法修改SQL,可以在获取数据后通过代码过滤重复项。比如用集合记录已出现的文本,只保留首次出现的条目:
以Java为例:
// 假设EngineItem是封装id和text的实体类 List<EngineItem> rawData = // 从数据库查询到的原始数据 Set<String> existingTexts = new HashSet<>(); List<EngineItem> uniqueData = new ArrayList<>(); for (EngineItem item : rawData) { // add方法返回false说明文本已存在,跳过;否则加入去重列表 if (existingTexts.add(item.getText())) { uniqueData.add(item); } } // 将uniqueData绑定到ComboBox
内容的提问来源于stack exchange,提问作者BlessPanda
相关产品推荐
相关产品推荐

