標籤:亂碼 innodb set 修改 就會 mysq .com 串連資料庫 設定
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&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的一些坑