No Dialect mapping for JDBC type 錯誤分析,Hibernate和數據庫類型對應

轉載  http://blog.csdn.net/goddessming/article/details/8853891html

當在hibernate中運用原始的sql語句進行操做的的時候,經常會報錯,錯誤不少都是關於
No Dialect mapping for JDBC type類型的錯誤,通過分析和查找,問題經常發生在幾個地方
一、錯誤的配置了hibernate的方言
java

二、就是你的數據庫中的字段和java裏面的類型不匹配的問題sql


查找緣由:經過查詢hibernate的源碼,找到問題的根本所在,就是hibernate中不支持對應的數據類型,具體數據類型的值,請查看下錶
數據庫

查看 java.sql.Types 類,能夠找到對應類型,調整相應的數據庫裏的類型,或者其餘支持這個類型的方言。 app

3ccbe6e1-4bf0-394c-8388-f0b1fea0018f.jpg

java,hibernate和數據庫對應的數據類型




Java數據類型 Hibernate數據類型 標準SQL數據類型
(PS:對於不一樣的DB可能有所差別)
byte、java.lang.Byte byte TINYINT
short、java.lang.Short short SMALLINT
int、java.lang.Integer integer INGEGER
long、java.lang.Long long BIGINT
float、java.lang.Float float FLOAT
double、java.lang.Double double DOUBLE
java.math.BigDecimal big_decimal NUMERIC
char、java.lang.Character character CHAR(1)
boolean、java.lang.Boolean boolean BIT
java.lang.String string VARCHAR
boolean、java.lang.Boolean yes_no CHAR(1)('Y'或'N')
boolean、java.lang.Boolean true_false CHAR(1)('Y'或'N')
java.util.Date、java.sql.Date date DATE
java.util.Date、java.sql.Time time TIME
java.util.Date、java.sql.Timestamp timestamp TIMESTAMP
java.util.Calendar calendar TIMESTAMP
java.util.Calendar calendar_date DATE
byte[] binary VARBINARY、BLOB
java.lang.String text CLOB
java.io.Serializable serializable VARBINARY、BLOB
java.sql.Clob clob CLOB
java.sql.Blob blob BLOB
java.lang.Class class VARCHAR
java.util.Locale locale VARCHAR
java.util.TimeZone timezone VARCHAR
java.util.Currency currency VARCHAR


解決辦法:ide

(1)寫個類繼承SQLServerDialect,註冊類型映射ui


[java] view plain copy
  1. package com.xuedou.skyedu.util;  url

  2. import java.sql.Types;  spa

  3. import org.hibernate.Hibernate;  .net

  4. import org.hibernate.dialect.SQLServerDialect;  

  5. /**

  6. * 註冊nvarchar類型映射

  7. */

  8. publicclass SkySQLServerDialect extends SQLServerDialect{  

  9. public SkySQLServerDialect() {  

  10. super(); //調用父類的構造方法(super()必定要放在方法的首個語句)

  11.        registerHibernateType(Types.NVARCHAR, Hibernate.STRING.getName());  

  12.    }  

  13. }  


(2)配置hibernate文件,修改成

[html] view plain copy
  1. hibernate.dialect=com.xuedou.skyedu.util.SkySQLServerDialect  

相關文章
相關標籤/搜索