<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-126  評論-247  文章-5  trackbacks-0

    剛剛遇見一個很奇怪的問題,是因 Hibernate SQL 方言配置不正確引起的,之前還真不知道后果會這么嚴重,花了點時間才找出問題的所在。

    這個異常不好排,因為后臺沒有拋出任何的異常信息,而且后臺輸出打印的信息很正常 !

    實體類 :

     
    package net.yeah.fancydeepin.po;

    import javax.persistence.Column;
    import javax.persistence.Entity;
    import javax.persistence.GeneratedValue;
    import javax.persistence.Id;
    import javax.persistence.Table;
    import org.hibernate.annotations.GenericGenerator;

    @Entity
    @Table(name 
    = "person")
    public class Person {

        
    private Integer id;
        
    private String  name;
        
        @Id
        @GenericGenerator(name 
    = "idGenerator", strategy = "native")
        @GeneratedValue(generator 
    = "idGenerator")
        
    public Integer getId() {
            
    return id;
        }
        
        @Column(length 
    = 18)
        
    public String getName() {
            
    return name;
        }
        
        
    public void setId(Integer id) {
            
    this.id = id;
        }
        
        
    public void setName(String name) {
            
    this.name = name;
        }
        
    }
     


    hibernate.cfg.xml 清單 :

     1  
     2 <hibernate-configuration>
     3 
     4     <session-factory>
     5 
     6         <!-- Database connection settings -->
     7         <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
     8         <property name="connection.url">jdbc:mysql://localhost:3306/temp</property>
     9         <property name="connection.username">username</property>
    10         <property name="connection.password">password</property>
    11         
    12         <!-- SQL dialect -->
    13         <property name="dialect">org.hibernate.dialect.SQLServerDialect</property>
    14 
    15         <!-- Enable Hibernate's automatic session context management -->
    16         <property name="current_session_context_class">thread</property>
    17         
    18         <!-- Echo all executed SQL to stdout -->
    19         <property name="show_sql">true</property>
    20         <property name="format_sql">true</property>
    21 
    22         <mapping class="net.yeah.fancydeepin.po.Person"/>
    23         
    24     </session-factory>
    25 
    26 </hibernate-configuration>
    27  


    Junit 測試 :

     
    @Test
        
    public void createTable(){
            
            
    new SchemaExport(new AnnotationConfiguration().configure()).create(truetrue);
        }
     

    后臺輸出 :

     
        drop table 
    if exists person

        create table person (
            id integer not 
    null auto_increment,
            name varchar(
    18),
            primary key (id)
        )
     

    從后臺輸出的信息看來,沒有任何的不妥,建表語句是正確的,但去數(shù)據(jù)庫那里無論怎么個刷新法,就是沒有 person 這張表,這個就很郁悶了 !

    由于測試的時候,對于配置文件,一般都是采取 Copy 改的方式,這才引起的問題,回過頭看 hibernate.cfg.xml 清單中的第 13 行,當注意到了

    才知道自己犯了很低級的錯誤,第 13 配置的 Hibernate SQL 是 SQL  Server 的方言,而我現(xiàn)在用的是 MySQL 數(shù)據(jù)庫,將這行配置改成 :

     
    <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
     

    再次運行 Junit 測試,后臺打印輸出一模一樣的信息,不同的是,這回數(shù)據(jù)庫中的 person 表出來了,它是正確建的表。

    最后附上 :

    Hibernate SQL方言 (hibernate.dialect)

    RDBMS Dialect
    DB2 org.hibernate.dialect.DB2Dialect
    DB2 AS/400 org.hibernate.dialect.DB2400Dialect
    DB2 OS390 org.hibernate.dialect.DB2390Dialect
    PostgreSQL org.hibernate.dialect.PostgreSQLDialect
    MySQL org.hibernate.dialect.MySQLDialect
    MySQL with InnoDB org.hibernate.dialect.MySQLInnoDBDialect
    MySQL with MyISAM org.hibernate.dialect.MySQLMyISAMDialect
    Oracle (any version) org.hibernate.dialect.OracleDialect
    Oracle 9i org.hibernate.dialect.Oracle9iDialect
    Oracle 10g org.hibernate.dialect.Oracle10gDialect
    Sybase org.hibernate.dialect.SybaseDialect
    Sybase Anywhere org.hibernate.dialect.SybaseAnywhereDialect
    Microsoft SQL Server org.hibernate.dialect.SQLServerDialect
    SAP DB org.hibernate.dialect.SAPDBDialect
    Informix org.hibernate.dialect.InformixDialect
    HypersonicSQL org.hibernate.dialect.HSQLDialect
    Ingres org.hibernate.dialect.IngresDialect
    Progress org.hibernate.dialect.ProgressDialect
    Mckoi SQL org.hibernate.dialect.MckoiDialect
    Interbase org.hibernate.dialect.InterbaseDialect
    Pointbase org.hibernate.dialect.PointbaseDialect
    FrontBase org.hibernate.dialect.FrontbaseDialect
    Firebird org.hibernate.dialect.FirebirdDialect




      
    posted on 2012-10-06 14:29 fancydeepin 閱讀(2029) 評論(0)  編輯  收藏

    只有注冊用戶登錄后才能發(fā)表評論。


    網(wǎng)站導航:
     
    主站蜘蛛池模板: 国产成人无码免费视频97| 日韩免费电影在线观看| 国产亚洲美女精品久久久久狼| 国产精品亚洲综合天堂夜夜| 日韩a在线观看免费观看| 在线观看亚洲网站| 亚洲国产成人久久精品99| 暖暖免费中文在线日本| 国产亚洲色视频在线| 中国毛片免费观看| 亚洲AV日韩AV天堂一区二区三区| 182tv免费视频在线观看| 久久久久亚洲精品无码蜜桃 | 日韩一级免费视频| 香蕉视频亚洲一级| 国产日产亚洲系列最新| 中文字幕在线成人免费看| 亚洲精品高清国产一久久| 蜜桃AV无码免费看永久| 亚洲欧美不卡高清在线| 免费一级毛片不卡在线播放| jizz18免费视频| 久久亚洲精品人成综合网| 成人免费视频88| 一级毛片a免费播放王色| 亚洲AV无码一区东京热久久| AV无码免费永久在线观看| 亚洲AV无码专区在线电影成人 | 日本高清免费网站| 青柠影视在线观看免费| 亚洲日韩乱码久久久久久| 暖暖在线日本免费中文| 中文字幕免费人成乱码中国| 色噜噜综合亚洲av中文无码| 日本特黄特色免费大片| 免费无码又爽又刺激一高潮| 激情综合亚洲色婷婷五月APP| 亚洲AV无码成H人在线观看| 亚洲免费视频在线观看| 男人的天堂av亚洲一区2区| 久久亚洲国产午夜精品理论片|