2012-01-24 58 views
1

當我試圖從SQLServer2008中的表中獲取記錄時,得到的異常名爲:org.hibernate.MappingException:No JDBC方法的映射類型: -9爲什麼?org.hibernate.MappingException:No JDBC類型的方言映射:-9

雖然配置文件是正確的。

+0

我正在使用Hibernate4.0從Sqlserver2008中獲取 – aswininayak

+0

http://www.coderanch.com/t/565413/ORM/java/No-Dialect-mapping-JDBC-type#2567622 – aswininayak

+0

我有同樣的問題和@ lephix的答案解決了問題,您應該將其標記爲正確。 – Roberto

回答

2

我改變了查詢,並明確地將其轉換爲varchar和它的工作.......

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

這是Hibernate映射類型的問題。

你可以擴展一個方言。例如:

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文件中的方言類即可。 – lephix

相關問題