java - Hibernate 外部表关系

标签 java postgresql hibernate spring-boot spring-data-jpa

首先,我应该提到我们正在努力保持新数据库的分离,以避免在未来创建一个单一的数据库。在我们的遗留数据库中,我们有一个名为 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/

相关文章:

java - 从 HQL 中获取带有特殊字符的数据

java - Spring Boot 2 是否支持 Java 10?

sql - 在一个连接表上使用组合条件连接

java - 通过代理使用 Javamail

mysql - 获取过去三年内发出请求的所有用户

java - 在 PostgreSQL 中保存文件路径,删除反斜杠

java - 使用 HibernateTemplate 的问题 : java. lang.NoSuchMethodError : org. hibernate.SessionFactory.openSession()Lorg/hibernate/classic/Session;

java - 使用 Hibernate 和 Spring 的一对多映射

java - 寻找一种设计模式来定义进行一组 API 调用并在之后采取行动的各种任务

java - 具有不同查询参数的两种 GET 方法