Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用于PostgreSQL数据库的MySQL方言_Mysql_Spring_Hibernate_Postgresql - Fatal编程技术网

用于PostgreSQL数据库的MySQL方言

用于PostgreSQL数据库的MySQL方言,mysql,spring,hibernate,postgresql,Mysql,Spring,Hibernate,Postgresql,在我的Spring MVC应用程序中,我使用PostgreSQL DB 9.3和Hibernate作为JPA供应商。下面是我的application-dao.xml文件: <bean id="propDataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName" value="org.postgres

在我的Spring MVC应用程序中,我使用PostgreSQL DB 9.3和Hibernate作为JPA供应商。下面是我的application-dao.xml文件:

<bean id="propDataSource"
    class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="driverClassName" value="org.postgresql.Driver" />
    <property name="url" value="jdbc:postgresql://localhost:5432/mysql" />
    <property name="username" value="abcd" />
    <property name="password" value="abcd" />
</bean>

<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
    <property name="entityManagerFactory" ref="emf"/>
</bean>

<tx:annotation-driven transaction-manager="transactionManager" />

<bean id="emf" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
    <property name="dataSource" ref="propDataSource" />
    <property name="jpaVendorAdapter">
        <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter" />
    </property>
    <property name="packagesToScan" value="com.trua.prol"/>
    <property name="jpaProperties">
        <props>
            <prop key="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</prop>
            <prop key="hibernate.max_fetch_depth">3</prop>
            <prop key="hibernate.jdbc.fetch_size">50</prop>
            <prop key="hibernate.jdbc.batch_size">10</prop>
            <prop key="hibernate.show_sql">true</prop>
        </props>
    </property>
</bean>
我错误地使用mysqldialent来提供hibernate.dialent,并意外地发现它工作正常。当我使用正确的方言postgresql方言时,它也起了作用


这是有意的吗?我可以在Postgre DBs中使用MySQL方言吗?

SQL就是SQL。只要不使用任何特定的数据库功能,每种方言都可以使用。一旦你开始使用函数或特定的数据库选项,事情就开始分崩离析。MySQL使用一些非标准的东西,比如+表示字符串连接,或者`表示引用Postgres将拒绝的对象。如果您的查询没有使用这种非标准语法,那么您不会注意到其中的差异。