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