我被困在Spring + Hibernate的奇怪問題上。Spring + Hibernate - 使用@Table名稱註釋問題
我有一些實體:
package arthur.khusnutdinov.mysitev2.pub.mods.db;
// Generated 05.09.2017 23:23:19 by Hibernate Tools 5.2.5.Final
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import static javax.persistence.GenerationType.IDENTITY;
import javax.persistence.Id;
import javax.persistence.Table;
/**
* SitePages generated by hbm2java
*/
@Entity
@Table(name = "site_pages", catalog = "artfunpw")
public class SitePages implements java.io.Serializable {
private Integer id;
private String pageUrl;
private String pageHtmlContent;
和會話配置代碼:
@Bean
public LocalSessionFactoryBean sessionFactory() {
LocalSessionFactoryBean factoryBean = new LocalSessionFactoryBean();
factoryBean.setDataSource(dbDataSource);
Properties props = new Properties();
props.setProperty("hibernate.dialect", "org.hibernate.dialect.MySQLDialect");
props.setProperty("hibernate.format_sql", "true");
props.setProperty("hibernate.show_sql", "true");
props.setProperty("net.sf.ehcache.configurationResourceName", "/ehcache.xml");
props.setProperty("hibernate.cache.provider_class", "org.hibernate.cache.EhCacheProvider");
props.setProperty("hibernate.cache.region.factory_class", "org.hibernate.cache.ehcache.EhCacheRegionFactory");
props.setProperty("hibernate.cache.use_second_level_cache", "true");
props.setProperty("hibernate.cache.use_query_cache", "true");
factoryBean.setHibernateProperties(props);
factoryBean.setPackagesToScan("arthur.khusnutdinov");
return factoryBean;
}
一切工作在MySQL數據庫罰款,直到表名是SITEPAGES,但它不工作,如果表名是site_pages - 我有java.sql.SQLSyntaxErrorException:表'artfunpw.sitepages'不存在。 看來,像Hibernate一樣忽略了@Table(name = "site_pages", catalog = "artfunpw")
。
我在做什麼錯,如何讓Hibernate尊重@Table註解?
非常感謝!
更新1: 試圖添加
spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
到application.properties - 沒有幫助。
hibernate.implicit_naming_strategy
也沒有解決問題。
更新2:我使用休眠5 :)。
以及如果忽略'catalog'?你也可以試試'MySQL5Dialog' – Antoniossss
這兩個變種都沒有解決問題 –
'spring.jpa.hibernate.naming.physical-strategy = org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl'沒有幫助 –