EntityManager能知道它死了吗?

时间:2012-10-30 17:09:03

标签: java jpa

我的代码:

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

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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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