2011-01-18 7 views
15

私は、最近Hibernateがそのタイプシステムを3.6でredidしたことを知っています。これで、JavaクラスをType(またはUserType)に関連付けることができるようになりました。たとえば、私はjoda-timeを使用し、LocalDateとLocalDateTimeを適切なSQL型にマップする2つのUserTypesを持っています。Hibernate TypeResolver

これはオブジェクトで作業するときにうまく動作しますが、Hiberパラメータとしてjodaタイプを渡したい場合は、hibernateが混乱するので、コールするたびにタイプを指定する必要があります。 LocalDatetimeType>私はこれを行う方法がわからないんだけど -

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

私はそれがLocalDateTimeを言うには、Configuration /のSessionFactoryセットアップの段階で可能になりましたと思います。 TypeResolverを見つけましたが、これを達成するためにどのメソッドを呼び出すべきかを解読するのに問題がありました。

また、3.6の新しいタイプのものでもこれができない場合は、私に修正してください。

答えて

10

私自身の質問に答える。

どのように知っているか分かります。未知のタイプのための

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

TypeResolverルックアップは、registrationKeyが仕事をしていませんように、クラスの完全な名前を登録したクラス名を使用します。