Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 休眠类型解析程序_Java_Hibernate_Types_Jodatime - Fatal编程技术网

Java 休眠类型解析程序

Java 休眠类型解析程序,java,hibernate,types,jodatime,Java,Hibernate,Types,Jodatime,我知道hibernate最近在3.6中重新定义了它的类型系统。我认为这现在允许您将java类与类型(或用户类型)关联起来。例如,我使用joda time,并有几个用户类型将LocalDate和LocalDateTime映射到适当的SQL类型中 这在处理对象时可以很好地工作,但是如果我想将joda类型作为HQL参数传递,hibernate会感到困惑,因此每次调用时都必须记住提供该类型 query.setParameter( "now", new LocalDateTime(), Hibernate

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

这在处理对象时可以很好地工作,但是如果我想将joda类型作为HQL参数传递,hibernate会感到困惑,因此每次调用时都必须记住提供该类型

query.setParameter( "now", new LocalDateTime(), Hibernate.custom( LocalDateTimeType.class ) );
我认为现在可以在配置/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执行此任务