我们使用的是JPA 2.0
,我们在websphere 中创建了数据源,并尝试通过J2SE 应用程序访问数据库。我们收到无效的用户名和密码错误。如果我们在 persistence.xml
中提供用户名和密码,它就可以正常工作。
请任何人解释一下为什么我们必须在 persistence.xml 中提供数据库凭据,因为我们有数据源。
说明:数据源创建成功,测试成功。
persistence.xml
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0"
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">
<persistence-unit name="Printer">
<jta-data-source>jdbc/TestDataSource</jta-data-source>
<properties>
<property name="openjpa.Optimistic" value="false" />
<property name="openjpa.LockManager" value="pessimistic" />
<property name="javax.persistence.jdbc.user" value="admin" />
<property name="javax.persistence.jdbc.password" value="admin#2" />
</properties>
</persistence-unit>
</persistence>
最佳答案
似乎 websphere 中的数据源配置不正确。 Test the database connection通过websphere控制台验证配置。
一个DataSource有 2 种方法来获取连接
。如果您通过属性提供凭据,您的 jpa 实现似乎会使用 DataSource.getConnection(String username, String password)
。
连接属性旨在在 Java SE 环境中使用。在 JEE 中,您应该更喜欢 JNDI 查找。参见8.2.1.9部分JPA 2.0 规范。
关于java - 为什么我们必须在 persistence.xml 中提供数据库凭据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20882501/