首页 > 解决方案 > 如何将 hibernate 从 4.3 迁移到 5.3 -Type Resolver Class

问题描述

我正在将我的应用程序从休眠 4.3 升级到 5.3。我在 4.3 中使用了 org.hibernate.type.TypeResolver 中的 heuristicType 方法。这个类从 5.3 版本中被弃用,如何重写这段代码。

示例代码:

Query query = (Query) session.createQuery(queryString);
query.setParameter(0,value,  (new TypeResolver()).heuristicType(value.getClass().getName()));

标签: javahibernate

解决方案


如果您担心当值为 时它无法检测到类型null,您可以只传递一个非空常量一次,setParameter然后传递真正的值。第一个类型的处理程序将被确定并缓存以供对同一Query对象的后续调用。但是请记住,0 是无效索引。它们在 JPA 中从 1 开始。只是由于实施失败,他们曾经允许 0 索引参数。只需将它们更改为名称,您就不必担心它。

简而言之:

Query query = (Query) session.createQuery(queryString);
query.setParameter("name", NOT_NULL_CONSTANT);
query.setParameter("name", value); // actual value

推荐阅读