首先,我应该提到我们正在努力保持新数据库的分离,以避免在未来创建一个单一的数据库。在我们的遗留数据库中,我们有一个名为 eventstub
的表,我需要从新数据库访问它的数据。我正在使用 Postgres 9.6.3
,它允许 postgres_fdw
扩展跨服务器创建外部表。这么多工作。我目前的问题在于 Hibernate 无法验证这个外部表的存在。有问题的确切错误是:
Caused by: org.hibernate.tool.schema.spi.SchemaManagementException: Schema-validation: missing table [eventstub]
我可以从新数据库查询外部表,结果毫无问题地返回。由于我在堆栈中,我认为保留 spring.jpa.hibernate.ddl-auto = validate
是明智的,因为我可能会在我的 JPA 关联中出错。在我的新数据库中,我有一个表 Event
,我用它来包装新数据以及对遗留数据库 eventstub< 中表的主键的引用
。以下是我如何定义这种关系:
@NotNull
@OneToOne(targetEntity = EventStub.class)
@JoinTable(name = "eventstub", joinColumns = @JoinColumn(name = "ems_event", referencedColumnName = "id"))
private EventStub emsEvent;
当我更改 spring.jpa.hibernate.ddl-auto = none
时,我没有遇到任何问题。我可以很好地访问外部表。有谁知道是否有可能以某种方式仅排除这个表,以便验证架构的其余部分?
最佳答案
我找到了包含详细信息的答案here
对于我的应用程序,设置
配置文件中的 hibernate.hbm2dll.extra_physical_table_types: FOREIGN TABLE
成功了。
如果您觉得这有帮助,请确保也对原始答案投赞成票:-)
关于java - Hibernate 外部表关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45034039/