2

我的代码:

emf = Persistence.createEntityManagerFactory("cassandra_pu");
em = emf.createEntityManager();

我动态更改 persistence.xml 以更改为 cassandra_pu 单元的 IP 地址。但是,它可能执行得太快,因此返回旧实体管理器而不是新实体管理器。有没有办法检查创建的 em 实体管理器是否足够好用?

4

2 回答 2

1

它可能取决于正在使用的 EJB 容器,但通常persistence.xml在下一次重新部署应用程序之前不会反映对的更改 - 因此“旧”实体管理器将一遍又一遍地返回,直到您重新部署。

于 2012-10-30T18:44:16.213 回答
0

一些提供商允许它,但它是本机功能。查看 Eclipselink 的 refreshMetadata() 以了解更改。但是如果只有数据库连接/模式不同,您应该使用新的 PU。只需指定 ORM.xml 以根据需要覆盖表和方案名称,您就可以重用类

于 2012-10-30T22:02:14.103 回答