0

如此处所述 ,我想通过捕获实体类不匹配时发生的异常来更新用户的数据库。我知道我可以在每个 db-interface 方法中添加一个 catch 语句,但这很容易出错*。其他“轮询方法”也是可能的,但它们不是我想要的通过捕获异常来驱动的中断。

我认为我正在寻找的是在将异常传递给用户之前捕获异常(可能会使应用程序崩溃)。我会把我的catch块放在那里。我会把它放在非 NB 应用程序的 main() 中。

  • 我的理解是基于实体抛出异常(即只涉及一个实体的方法,没有改变,不会抛出任何异常,尽管其他实体已经改变)。
4

1 回答 1

0

我有一个类似的问题,但我想我的问题更难解决。我在服务器端使用 JPA,而服务器实际上是一个 Web 服务提供者。

持久性由容器管理,根据我的应用设置,它使用“创建”策略。当然,每次我更改实体并重新部署应用程序时,都会引发很多异常。

我最终决定做的是在一个单独的过程中创建/迁移现有的数据库。也就是说,读取与实体关联的元数据并将其与当前数据库进行比较。

之后,它会创建一个迁移脚本,以防 db 架构不同以将其适应新的架构而不会丢失任何信息(迁移脚本生成的复杂性取决于您计划如何处理数据类型更改或属性删除等情况)。最后一步是重新部署应用程序(在您的情况下启动它)。

我建议采用一种主动的方法,您不必等待抛出异常,而是在运行应用程序之前尝试猜测更改。

于 2010-08-10T22:32:37.580 回答