TypeEnum不起作用

时间:2016-03-09 13:33:20

标签: java hibernate

导入时,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());    
                    }
}

1 个答案:

答案 0 :(得分:0)

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

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());

希望有所帮助。