java - 如何为Hibernate的Query对象设置通用参数?

标签 java hibernate

我创建了一个通用方法,它将采用 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

这里empNumberempName是参数名称,它们的类型分别是Integer和String。

现在假设我还有一个 SQL,它的 hibernateQueryName 是 StudentData:

SELECT s.s_nm    AS EMP_NAME
  FROM student s
 WHERE s.dob > :studentDOB

这里studentDOB是参数名称,其类型为DatestudentDOB 是我将从 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/

相关文章:

java - Hibernate延迟加载修改值

java - JEE容器中数据源连接的拦截连接池

hibernate - Grails:标准构建器中的嵌套关​​联问题

java - 从数据包中显示 IP 地址

java - 引用泛型派生类仅指定一些类型参数会导致编译器出现 "incompatible types"错误

java - Spark Streaming Word Count 错误/语法

java - 如何比较字符串和 Hashmap 键?

java - 如何减少 DataNucleus + Derby 的堆使用量

java - 我该如何解决这个 Hibernate 限制?

java - 在@Transactional 类中处理异常