2012-01-24 5 views
1

SQLServer2008のテーブルからレコードをフェッチしようとすると、例外が発生しています:org.hibernate.MappingException:いいえJDBCタイプのダイアレクトマッピング: -9なぜ?org.hibernate.MappingException:いいえJDBC型のダイアレクトマッピング:-9

設定ファイルは正しいですが。

+0

がSqlserver2008 – aswininayak

+0

からフェッチするHibernate4.0を使用していますhttp://www.coderanch.com/t/565413/ORM/java/No-Dialect-mapping-JDBC-type#2567622 – aswininayak

+0

私は同じ問題を抱えていたと@ lephixの答えが問題を解決したら、正しいものとしてマークしてください。 – Roberto

答えて

2

私は、クエリを変更して、明示的にvarchar型にキャストし、それはそれは、Hibernateマッピングタイプの問題だ.......

String myquery = "select cast(t2.name as varchar) column_name from sys.objects t1 inner join sys.columns t2 on t2.object_id = t1.object_id"+ 
" left join sys.indexes t3 on t3.object_id = t1.object_id and t3.is_unique = 1 left join sys.index_columns t4 on t4.object_id = t1.object_id and t4.index_id = t3.index_id and t4.column_id = t2.column_id where (upper(t1.type) = 'U' or upper(t1.type) = 'V') and upper(schema_name(t1.schema_id)) = 'dbo' and upper(t1.name) = 'TEST'"; 
10

を働きました。

あなたは方言を拡張することができます。 例:

public class SQLServerDialectOverrider extends SQLServerDialect{ 
    public SQLServerDialectOverrider() { 
     super(); 
     registerHibernateType(Types.NVARCHAR, Hibernate.STRING.getName()); 
     registerHibernateType(Types.LONGVARCHAR, Hibernate.TEXT.getName()); 
    } 
} 

このクラスをダイアレクトクラスとして使用します。

+0

このクラスはどこに実装する必要がありますか?どのパッケージですか? – Roberto

+0

どこにでも実装できます。 hibernate XMLファイルでdialectクラスとして設定するだけです。 – lephix

関連する問題