我的代码:
emf = Persistence.createEntityManagerFactory("cassandra_pu");
em = emf.createEntityManager();
我动态更改persistence.xml以更改为cassandra_pu单元的IP地址。然而,它可能执行得太快,因此返回旧的实体管理器而不是新的实体管理器。有没有办法检查创建的em实体管理器是否足够好用?
答案 0 :(得分:1)
它可能取决于正在使用的EJB容器,但通常在下次重新部署应用程序之前不会反映对persistence.xml
的更改 - 因此“旧”实体管理器将一次又一次地返回直到你重新部署。
答案 1 :(得分:0)
有些提供商允许它,但它是原生功能。查看Eclipselink的refreshMetadata()以获取更改。但是,如果只有数据库连接/模式不同,那么您应该使用新的PU。只需指定一个ORM.xml来根据需要覆盖表和方案名称,您就可以重用类