Hibernate JPA的應用中的persistence.xml文件中配置的數據的 hibernate.dialect 這個屬性是用來指定使用哪種數據的sql方式將HQL轉換成sql語句;
如:
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5Dialect" />--mysql
<property name="hibernate.dialect" value="org.hibernate.dialect.Oracle10gDialect" />--oracle10
等等,指定不同的數據庫在轉換HQL語句的時候會用指定數據庫的關鍵字解析HQL。從而能夠使HQL生成正確的Sql語句;
同樣的在Spirng JPA的配置中也有這樣的一項
<bean id= "jpaVendorAdapter" class= "org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter" > <property name="database" value="MYSQL" /> <property name="databasePlatform"value="org.hibernate.dialect.MySQL5Dialect" /> </bean > |
這個裏面的屬性 database 指的是使用什麼數據庫,第二個屬性 databasePlatform指的是 使用哪個數據庫的描述語言來解析HQL語句爲Sql語句。這樣第二個選項就與hibernateJpa的persistence.xml文件中的
<property name="hibernate.dialect" value="org.hibernate.dialect.Oracle10gDialect" />
重複,
但是在架構搭建的時候這兩個是不衝突的,如果兩邊都配置了這個屬性,而且兩邊的配置都不一樣,系統會先考慮Spring JPA 的配置,另一個會忽略。如果在SrpingJPA的配置中沒有配置以上兩項,只是在HIbernate中配置,則系統會識別HibernateJpa配置的屬性;
如果在系統中發現通過HQL語句生成的SQL語句不是拼寫錯了而是系統生成的sql的格式錯了,或者使用的特殊關鍵字與當前的數據庫不符,則就是配置這個數據庫的sql描述的屬性的時候配錯了
在創建Spring 框架的地方要考慮到兩個框架之間的融合性;