导入时,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());
}
}
答案 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());
希望有所帮助。