我有一个 Java 应用程序,它使用 JDBC 连接到 Postgres 数据库,并使用 JPA 对其执行操作。我希望使用 JTA 事务类型,而不是本地事务类型。为此,我需要指定一个数据源。
尽管阅读this thread ,我仍然不知道在 xml 文件中实际放入什么,因为我不知道如何检索我的数据源的名称,和/或在何处以及如何定义它。
当我使用 RESOURCE-LOCAL
时,与数据库的连接已经没有问题了。交易类型。我浏览过的很多主题都提到在名为 context.xml
的文件中定义它.一定要这个文件吗?由于在创建 JDBC 数据库连接时没有为我自动生成此类文件,因此我需要手动创建它。
简而言之,如果可以通过添加
使下面的文件工作
<jta-data-source>something</jta-data-source>
,请告诉我那是什么东西,或者我怎么知道。否则,请告诉我如何以及在何处定义该内容。
<?xml version="1.0" encoding="UTF-8"?> <persistence version="2.1"
xmlns="http://xmlns.jcp.org/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence
http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
<persistence-unit name="BankingPU" transaction-type="JTA">
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
<class>banking.Splatka</class>
<class>banking.VlastnikKonta</class>
<class>banking.FyzickaTransakce</class>
<class>banking.Klient</class>
<class>banking.PlatebniKarta</class>
<class>banking.Transakce</class>
<class>banking.Uver</class>
<class>banking.Platba</class>
<class>banking.Konto</class>
<class>banking.BankovniPrevod</class>
<class>DB_control.Transakceprevod</class>
<class>banking.Transakceprevod</class>
<class>banking.TransakcePrevod</class>
<properties>
<property name="javax.persistence.jdbc.url" value="jdbc:postgresql://xxxxxxxxxx"/>
<property name="javax.persistence.jdbc.password" value="xxxx"/>
<property name="javax.persistence.jdbc.driver" value="org.postgresql.Driver"/>
<property name="javax.persistence.jdbc.user" value="xxxxxxxxxxx"/>
<property name="javax.persistence.schema-generation.database.action" value="create"/>
</properties> </persistence-unit> </persistence>
最佳答案
<jta-data-source>something</jta-data-source>
J2EE 环境中数据源的 jndi 名称。
当您引用任何数据源时,您不需要在 persistence.xml 中添加以下部分。
<property name="javax.persistence.jdbc.url" value="jdbc:postgresql://xxxxxxxxxx"/>
<property name="javax.persistence.jdbc.password" value="xxxx"/>
<property name="javax.persistence.jdbc.driver" value="org.postgresql.Driver"/>
<property name="javax.persistence.jdbc.user" value="xxxxxxxxxxx"/>
关于java - JPA persistence.xml,定义一个postgresql JTA数据源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37402336/