6
Initial SessionFactory creation failed.org.hibernate.MappingException: No Dialect mapping for JDBC type: 1111
    27 Dec, 2012 6:38:34 PM org.apache.catalina.core.StandardWrapperValve invoke
    SEVERE: Servlet.service() for servlet commission threw exception
    org.hibernate.MappingException: No Dialect mapping for JDBC type: 1111
        at org.hibernate.dialect.TypeNames.get(TypeNames.java:79)
        at org.hibernate.dialect.TypeNames.get(TypeNames.java:104)
        at org.hibernate.dialect.Dialect.getTypeName(Dialect.java:347)
        at org.hibernate.mapping.Column.getSqlType(Column.java:208)
        at org.hibernate.mapping.Table.sqlCreateString(Table.java:419)
        at org.hibernate.cfg.Configuration.generateSchemaCreationScript(Configuration.java:930)
        at org.hibernate.tool.hbm2ddl.SchemaExport.<init>(SchemaExport.java:105)
        at org.hibernate.impl.SessionFactoryImpl.<init>(SessionFactoryImpl.java:383)
        at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1385)
        at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:954)
        at com.core.commission.HibernateUtil.<clinit>(HibernateUtil.java:15)
        at com.core.commission.service.BaseCommissionService.saveRules(BaseCommissionService.java:48)
        at com.core.commission.service.BaseCommissionService.processSave(BaseCommissionService.java:22)
        at com.core.web.CommissionServlet.processRequest(CommissionServlet.java:51)
        at com.core.web.CommissionServlet.doPost(CommissionServlet.java:34)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)

Web サーバーの起動中に上記のエラーが発生します。enity クラスで enum マッピングを使用しました。何かのようなもの...

@Column(name = "commission_type")
        @Type(type = "com.core.commission.model.FNEnumUserType", parameters = @Parameter(name = "type", value = "com.core.commission.dto.CommissionType"))
        private CommissionType commissionType;

問題は何ですか? ありがとう !!

4

4 に答える 4

8

スタック トレースが示すのは、Hibernate がそれ自体を初期化する過程にあり、特に を実行していることConfiguration.generateSchemaCreationScriptです。これは、マップされたすべてのテーブルを調べて、それらの DDL を生成します。その一環として、既存の列を照会し、Hibernate の内部表現に変換します。ResultSetMetaData::getColumnTypeを呼び出しTypeNames::getてから、結果の型コードで呼び出すことによってこれを行います。問題は、型コード 1111 (「その他getColumnType」を意味する) を返すことであり、Hibernate はそれをどう処理すればよいかわかりません。

基本的に、テーブルのどこかに、Hibernate が処理できないタイプの列があります。それがどの列であるかがわかれば、それをどうするかを考え始めることができます。

于 2012-12-27T14:49:26.437 に答える
1

db側でトレースを実行するか、ブレークポイントを配置するか、アプリケーションのコードにログエントリを追加して、このエラーを生成しているクエリ、つまりエラーが発生する直前に実行されているクエリを特定してください。

クエリを取得したら、ステートメントをマイナーチャンクに分解して根本原因を絞り込み、方言でサポートされていない列/変数の種類を確認してください。

于 2012-12-27T14:22:19.070 に答える
1

あなたのクエリでは、一部のデータ型が不明な型として取得されていると思います。pls は、Java Bean で使用している適切なデータ型にキャストします。Postgres をデータベースとして使用している場合。あなたのJavaコードでは、例えば:のようにキャストすることができます:select column_name :: desired type as \"desired_name\" 例えば:select type_name :: text as \"typeName\"

" :: " の場合、これにより問題が発生する場合は\ \:\ \: を使用してください。つまり、エスケープ文字が含まれています。

于 2014-03-12T11:43:30.727 に答える
0

エラーを解決することができました。

1111 はNull値用であり、私の場合、その列は必須であり、いつでも列挙型から 1 つの値が存在します。したがって、設定する必要はありません。SQLタイプ1111に変更しました。ARCHAR

最後にそれは動作します。

于 2012-12-27T15:16:15.050 に答える