软件包的属性“ hibernate.hbm2ddl.auto”属性

时间:2018-09-17 11:09:30

标签: hibernate jpa

我有程序包A 程序包B 以及已映射的实体。我希望 A包自动更新,因此我将“ hibernate.hbm2ddl.auto”设置为“ update”。同时,我不希望在运行应用程序时将 B包中的映射自动应用于数据库中的表。我想手动或使用版本控制来更新它们。问题是我在谈论不同的软件包,而不是模块。因此,不能有其他设置文件。我该如何解决?

1 个答案:

答案 0 :(得分:0)

我能立即看到这种工作的唯一方法是,两个软件包中的实体是否由两个不同的SessionFactory / EntityManagerFactory实例管理。

如果您希望所有实体都由一个实例管理,那么您将无法直接执行此操作。

想到的一个选项是使用 Hibernate Tools 模式导出ant任务。这里的想法是,您将架构更改的生成在构建时脱机转移到文件中。然后,您可以将此文件重命名为import.sql并将其放置在应用程序的类路径的根目录中,并且Hibernate将在启动时自动执行这些语句。

我不确定 Hibernate Tools ant任务是否允许您过滤感兴趣的对象,但也许不能,您可以提供第二种配置,将其范围限制为仅在其中的实体您要自动管理的软件包或使用后续任务来过滤生成的sql文件。