java - Hibernate 类型解析器

标签 java hibernate types jodatime

我知道 hibernate 最近在 3.6 中重做了它的类型系统。我认为这现在允许您将 java 类与类型(或用户类型)相关联。例如,我使用 joda-time 并有几个将 LocalDate 和 LocalDateTime 映射到适当的 SQL 类型的 UserType。

这在处理对象时工作正常,但如果我想将 joda 类型作为 HQL 参数传递,hibernate 会感到困惑,所以我必须记住每次调用时都提供类型。

query.setParameter( "now", new LocalDateTime(), Hibernate.custom( LocalDateTimeType.class ) );

我认为现在可以在 Configuration/SessionFactory 设置阶段说 LocalDateTime -> LocalDatetimeType 但我不确定如何执行此操作。我找到了 TypeResolver,但无法破译我应该调用哪个方法来实现此目的。

或者即使使用 3.6 中的新类型也无法做到这一点,请纠正我。

最佳答案

回答我自己的问题。

当你知道怎么做时就足够简单了。

configuration.getTypeResolver().registerTypeOverride( LocalDateTimeType.TYPE, new String[]{ LocalDateTime.class.getName() } );
configuration.getTypeResolver().registerTypeOverride( LocalDateType.TYPE, new String[]{ LocalDate.class.getName() } );

未知类型的 TypeResolver 查找使用类名,因此将类的全名注册为 registrationKey 即可。

关于java - Hibernate 类型解析器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4725719/

相关文章:

java - 无法在 Ubuntu 上运行 javac

java - 创建后增加 LRUMap 的大小

types - Kotlin 类型不匹配!和?

Haskell 函数接受一个类型和一个值并检查值是否具有该类型

C int 数据类型及其变体

java - 从 HTMLDocument 中获取单个元素的文本内容

java - 适合从事 .NET 解决方案的 Java 开发人员的最佳资源

java - Spring-data-jpa OneToOne 单向问题

java - Hibernate-4 显示生成的 SQL 代码

java - 从 Oracle 中返回表的函数中选择的其他方法