java - JPA persistence.xml,定义一个postgresql JTA数据源

标签 java postgresql jpa datasource jta

我有一个 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/

相关文章:

java - 不明白为什么 int 在 Java 中重复

java - 使用 Spring Boot 1.4 MockMVC Controller 方法匹配时,'Cannot subclass final class java.lang.String'

sql - 如何在 postgresql 选择查询中仅从 age() 函数中获取年份

java - JPA SET IDENTITY_INSERT 不工作

java - Spring 一对一关系

java - org.dom4j.DocumentException : Stream closed Nested exception: Stream closed

java - 如何找到随机生成的数轴中的第一个和最后一个数字?

sql - Postgresql - 在违反唯一约束时更新行或删除

postgresql - 无法使用 Ansible 恢复和转储数据库 PostgreSQL

java - org.hibernate.MappingException 似乎无缘无故发生