我创建了一个通用方法,它将采用 hibernate 命名查询
,这是一个 HashMap
对象,其中包含该命名查询的参数名称值,方式如下:
方法签名是:
public static <T> ArrayList<T> getData(String hibernateQueryName, HashMap<?, ?>
queryNameValue) throws Exception;
现在假设我有一个 SQL,它的 hibernateQueryName
是 empData:
SELECT e.emp_nm AS EMP_NAME
, e.emp_address AS EMP_ADDR
FROM employee e
WHERE e.emp_no > :empNumber
AND e.name LIKE :empName
这里empNumber
和empName
是参数名称,它们的类型分别是Integer和String。
现在假设我还有一个 SQL,它的 hibernateQueryName
是 StudentData:
SELECT s.s_nm AS EMP_NAME
FROM student s
WHERE s.dob > :studentDOB
这里studentDOB
是参数名称,其类型为Date
。 studentDOB
是我将从 HashMap 获取的 key 。
我想设置这些参数和值来查询对象,例如:
Query query = getSession().getNamedQuery(hibernateQueryName);
query.setXXX(parameterName, parameterValue);
上面的代码是用我的getData
方法编写的。
有许多基于 Type
的 query.setXXX 方法,例如 query.setInteger()
但为了调用它,我需要找到 的类型?
我正在 getData
方法中传递它。是否可以使用未知类型的query.setXXX方法?
最佳答案
尝试使用query.setParameter("name", value)
,这不需要显式类型。
关于java - 如何为Hibernate的Query对象设置通用参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22962810/