假设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数据源定义hibernate方言。如果是甲骨文,我会使用下面指出的方言,如果是postgres,我会使用不同的方言。有谁知道怎么做或者能指出我如何做的文件?谷歌未能提供所需的信息。该应用程序将部署在JBoss应用程序服务器中,但我也想支持其他应用程序服务器。此外,我们有两个部署模型,一个使用postgres,一个使用oracle和Id,而不是必须构建两个Ears来支持配置文件中的一行差异。
提前致谢。
答案 0 :(得分:4)
在我发布问题之后,我找到了答案;
http://docs.jboss.org/hibernate/core/3.6/reference/en-US/html_single/#portability-dialectresolver
具体来说,如果没有指定方言,从3.2开始的hibernate版本应该从JTA数据源自动检测它,因此正确的程序是将方言规范完全从属性中删除。