4

休止状態のドキュメントによると:セクション 6.5。タイプレジストリ: http://docs.jboss.org/hibernate/orm/3.6/reference/en-US/html/types.html

新しいユーザー タイプを作成し、既存の hibernate の基本タイプをオーバーライドできます。新しいユーザー タイプを使用するには、以下を使用して登録する必要があります (上記のリンクを参照)。

Configuration cfg = ...;
cfg.registerTypeOverride( new SuperDuperStringType() );

しかし、hibernate.cfg.xml に登録する方法については、ドキュメントに記載されていませんか? 彼らがこれを hibernate.cfg.xml に追加するのを忘れたなんて信じられません。誰かこれについて知っていますか? ありがとう

4

2 に答える 2

4

すみません、省略。ドキュメントにはレジストリとキーの両方が記載されていますが、ユーザーが 1+1=2 を推測できることをある程度期待しています。私はそれをより明確にします。

http://docs.jboss.org/hibernate/orm/3.6/reference/en-US/html/types.html#types-value-basic組み込みの登録キーについて説明します。

そのセクションでわかるように、レジストリのデフォルトのマッピングjava.lang.Stringは toorg.hibernate.type.StringTypeです。そのため、Hibernate が Java タイプの属性を検出すると、「登録キー」としてjava.lang.String使用してこのレジストリを調べます。java.lang.String繰り返しますが、これはすべてデフォルトです。必要に応じて、各属性に明示的な型情報を与えることもできます。これは、ドキュメントの他の場所で説明されています。基本的には@Typeorを使用します<type/>

明示的な型情報が提供されていないときはいつでもHibernate に使用させたい場合SuperDuperStringTypeは、「java.lang.String」をSuperDuperStringType'sとして使用しgetRegistrationKeys()ます。

public class SuperDuperStringType implements BasicType {
    ...

    @Override
    public String[] getRegistrationKeys() {
        // lets use delegation and register ourselves under all of StringType's keys
        return org.hibernate.type.StringType.INSTANCE.getRegistrationKeys();
    }
}

その場合、マッピングに明示的なものは何も必要ありません。

于 2012-11-12T19:09:31.190 に答える
2

その投稿を見てみましょう: Hibernate でのカスタム タイプのマッピング

次の小さな変更でうまくいきました:

hibernate-mapping 終了タグの形式が間違っているため、/(スラッシュ) がありません。

それとは別に、それはすべてを説明します。

于 2012-11-12T15:39:31.087 に答える