2

我正在使用 JPA(Eclipselink) 和远程 mysql 数据库直接开发桌面应用程序。

我的 persistence.xml 我有两个 PersistenceUnit 一个使用 localhost 另一个使用我的远程数据库。当我尝试加载 EntityManagerFactory 时,它在 localhost 上工作正常,但从未连接到远程,并且没有提供错误,只是等待很长时间。这是我的persistence.xml的一部分

Windows Server 2003 上的远程 MYSQL。

<persistence-unit name="SOFALEnterprisePU3" transaction-type="RESOURCE_LOCAL">
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
<properties>
  <property name="javax.persistence.jdbc.url" value="jdbc:mysql://192.168.10.138:3306/sofaldb"/>
  <property name="javax.persistence.jdbc.password" value="password"/>
  <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/>
  <property name="javax.persistence.jdbc.user" value="root"/>
</properties>

本地 MYSQL

<persistence-unit name="SOFALEnterprisePU2" transaction-type="RESOURCE_LOCAL">
<properties>
  <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/sofaldb"/>
  <property name="javax.persistence.jdbc.password" value="password"/>
  <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/>
  <property name="javax.persistence.jdbc.user" value="root"/>
</properties>

4

2 回答 2

2

当您说远程时,您是指同一个局域网还是跨互联网?因为 IP 192.168.10.138 指定了一个专用 LAN,因此您的远程计算机必须在同一网络上拥有一个地址,例如 192.168.10。*

首先确保在 Windows 防火墙中打开端口 3306。

如果它是不同的网络,则需要将您的路由器配置为转发端口,并且您必须连接到路由器的公共 IP。

如果它是同一个 LAN,那么 mysql 可能没有设置为接受该用户名密码组合的远程连接。

于 2012-08-19T06:54:43.370 回答
0

在普通的JPA中,每个项目只使用一个persistence.xml。但是你可以试试Spring的JPA,它可以在一个项目中使用多个persistence.xml。查看这个链接来处理多个持久化单元。

于 2012-08-19T11:25:41.400 回答