1. 程式人生 > >hibernate5的一些坑

hibernate5的一些坑

title filter 復制 項目 解決方法 ssi 出錯 conn org

SessionFactory創建的修改

  如果你是剛剛從hibernate4升級到hibernate5,這時候你的項目肯定就要出錯了,什麽錯呢?

  org.hibernate.MappingException: Unknown entity: xx類

  這是因為SessionFactory創建方式變了

  hibernate4

Configuration conf = new Configuration().configure();
ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().
    applySettings(conf.getProperties()).build();
SessionFactory sessionFactory 
= conf.buildSessionFactory(serviceRegistry);

  hibernate5

StandardServiceRegistry standardRegistry = new StandardServiceRegistryBuilder().configure().build();
Metadata metadata = new MetadataSources(standardRegistry).getMetadataBuilder() .applyImplicitNamingStrategy(ImplicitNamingStrategyComponentPathImpl.INSTANCE).build();
SessionFactory sessionFactory 
= metadata.getSessionFactoryBuilder().build();

hibernate5連接數據庫出錯

  錯誤提示

  MySQL server version for the right syntax to use near ‘type=InnoDB‘ at line x

  這個主要是hibernate方言設置出問題了

  修改hibernate.cfg.xml中的dialect,如下

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

hibernate連接數據庫出現亂碼或者出現SSL警告

  解決方法如下:

  <property name="connection.url">jdbc:mysql:///maven?characterEncoding=UTF8&amp;userSSL=false</property>

maven項目中使用hibernate出錯

  出錯提示

  org.hibernate.MappingNotFoundException: resource:**.hbm.xml not found

  原因

  原來對於Maven工程,編譯的工作是由Maven程序來完成的,而Maven默認只會把src/main/resources文件夾下的文件拷貝到target/classes文件夾下,所以上圖中用紅框框起來的.hbm.xml都不會被復制到/target/calsses文件夾下,所以Hibernate框架在運行的時候,就會報找不到*.hbm.xml的錯誤。

  解決辦法

  在pom.xml下添加以下代碼

<build>
    <resources>
        <resource>
            <directory>src/main/java</directory>
            <includes>
                <include>**/*.xml</include>
            </includes>
            <filtering>true</filtering>
        </resource>
        <resource>
            <directory>src/main/resources</directory>
            <includes>
                <include>**/*.xml</include>
                <include>**/*.properties</include>
            </includes>
        </resource>
    </resources>
</build>

hibernate5的一些坑