类型枚举不起作用


导入

com.sun.java.swing.plaf.windows.TMSchema类型不可见

for (Map.Entry<String, Object> parameter : parameters) {
                    try{
                        String s2 = (String) parameter.getValue();
                        try{
                            String value = (String) parameter.getValue();
                            query.setParameter(parameter.getKey(),TypeEnum.value);
                        }catch(IllegalArgumentException e){
                            query.setParameter(parameter.getKey(),parameter.getValue());
                        }
                    }catch(ClassCastException e){
                        query.setParameter(parameter.getKey(),parameter.getValue());    
                    }
}

这个答案是基于我们在评论中谈到的内容。我不是冬眠法师,我很确定有更好的解决方案。由于要设置参数类型,因此可以使用instaceof来确定使用哪种参数。根据此链接,您可以在for循环中使用这样的薄型:

if(parameter.getValue() instaceof String){
   query.setParameter(parameter.getKey(), parameter.getValue(), new StringType());
} else if (parameter.getValue() instanceof Integer){
   query.setParameter(parameter.getKey(), parameter.getValue(), new IntegerTypeType())
} else if(...)

等等。若要使用此解决方案,必须创建org.hibernate.Query查询,并在org.hibernate.type包中导入必要的类型。

当然,您可以使用 switch 语句代替 if 条件。但如果可以的话,我仍然更喜欢更简单的setParameter方法,你只需要添加参数的名称和值:

query.setParameter(parameter.getKey(), parameter.getValue());

希望有帮助。

最新更新