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