这里 where a1.color= true
在 java 中不起作用。当我在下拉列表中选择任何颜色时,出现错误。
//fist part
Public List<ConclusionBO> getConclusion(String color){
StringBuilder sql = new StringBuilder();
sql.append("select something");
sql.append("where a1.color= :colorParam");
//More statement
if(transactionStatus.equals("all")) {
query.setParameter("colorParam", true);
}else {
query.setParameter("colorParam", color);
}
}
当我这样做时,下面的代码对于我从下拉列表中选择的任何颜色都适用。但是当从下拉列表中选择全部时,它没有显示任何结果(当然,因为我的数据库没有列颜色的值“all”)
//second part
sql.append("select something");
sql.append("where a1.color= :colorParam");
//More statement
query.setParameter("colorParam", color);
我的问题是,当用户从下拉列表中选择“全部”时,我想从数据库中选择所有颜色(所有记录),这就是为什么在第一部分我设置 where a1.status = true
,因为我希望它返回所有结果,但最终返回错误。
日志中的错误消息是:
Not all named parameters have been set: [color]
我想澄清一下,//第二部分代码正在工作,只是当从下拉列表中选择全部时,它无法显示任何内容,因为我的数据库没有“全部”颜色列。
最佳答案
此解决方法可能有效
Public List<ConclusionBO> getConclusion(String color){ StringBuilder sql = new StringBuilder(); sql.append("select something"); //More statement if(!"all".equals(transactionStatus)) { sql.append("where a1.color= :colorParam"); query.setParameter("colorParam", color); } }
有了这个,您只需在需要过滤的内容时添加 where 子句,并且如果所选选项是全部,您只需选择每种颜色。
关于java - sql where 子句等于 true,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61209195/