2

假设 ejb-jar 具有以下 persistence.xml 配置:

    <?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
             version="2.0">
  <persistence-unit name="com.mystrotv.mdn.admanager.entity">
    <jta-data-source>/dataSource/MystroDS_Tx</jta-data-source>
    <properties>
      <property name="jboss.entity.manager.jndi.name" value="java:/EntityManagers/AdManagerPersistenceContext"/>
      <property name="jboss.entity.manager.factory.jndi.name" value="java:/EntityManagers/AdManagerPersistenceUnit"/>
      <property name="hibernate.dialect" value="org.hibernate.dialect.Oracle10gDialect"/>
      <property name="hibernate.hbm2ddl.auto" value="validate"/>
      <property name="hibernate.max_fetch_depth" value="5"/>
      <property name="hibernate.validator.apply_to_ddl" value="false" />
      <property name="hibernate.validator.autoregister_listeners" value="false" />
    </properties>
  </persistence-unit>
</persistence>

我想根据 JTA 数据源定义休眠方言。如果是 oracle,我使用下面指出的方言,如果是 postgres,我使用不同的方言。有谁知道如何做到这一点,或者可以指出我如何做到这一点的文档?谷歌未能提供所需的信息。该应用程序将部署在 JBoss 应用程序服务器中,但我也想支持其他应用程序服务器。此外,我们有两种部署模型,一种使用 postgres,一种使用 oracle 和 Id,而不必构建两个 Ears 来支持配置文件中的一行差异。

提前致谢。

4

1 回答 1

4

就在我发布问题之后,我找到了答案;

http://docs.jboss.org/hibernate/core/3.6/reference/en-US/html_single/#portability-dialectresolver

具体来说,如果没有指定方言,从 3.2 开始的 hibernate 版本应该从 JTA 数据源自动检测它,因此正确的过程是完全不使用方言规范。

于 2013-02-19T17:22:39.533 回答