Hibernate外键表关系

3

首先,我需要提到我们正在尝试保持新数据库的解耦,以避免在未来创建一个单体数据库。在我们的传统数据库中,有一个名为 eventstub 的表格,我需要从新数据库中访问其中的数据。我使用的是 Postgres 9.6.3,它允许使用 postgres_fdw 扩展在服务器之间创建外部表格。这部分已经成功运行。我的当前问题在于Hibernate无法验证该外部表格的存在。具体的错误如下:

Caused by: org.hibernate.tool.schema.spi.SchemaManagementException: Schema-validation: missing table [eventstub]

我可以从新的数据库中查询外部表,并成功返回结果。由于我使用的是stack技术,我认为保持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时,没有任何问题。我可以很好地访问外键表。是否有人知道是否可能仅排除此一个表,以便验证其余模式?
1个回答

6

我在 这里 找到了一个详细的答案。

对于我的应用程序,在配置文件中设置 hibernate.hbm2dll.extra_physical_table_types: FOREIGN TABLE 就解决了问题。

如果您觉得这篇文章有帮助,请记得给原始答案点赞 :-)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接