postgresql - 迁移到 Hibernate 5.2 后出现缺少表错误

标签 postgresql hibernate spring-boot naming

将 hibernate 升级到版本 5.2.10 后,我的 Spring Boot (1.4) 应用程序出现以下错误:

引起:org.hibernate.tool.schema.spi.SchemaManagementException:架构验证:缺少表 [abc.DummyPojoClass]

Java类是这样的:

@Entity
@Table(schema = "abc", name = "DummyPojoClass")
public class DummyPojoClass  {

    @Column(name = "object_id")
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Id
    private Long objectId;

    @Column(name = "name")
    @Value
    private String name;
}

在数据库表中是 abc.dummypojoclass,在 Hibernate 4.3 上解析表名没有问题。我试图更改 app.properties 中的命名策略设置:

spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl

但这并没有帮助。有解决问题的想法吗?

最佳答案

PhysicalNamingStrategyStandardImpl 什么都不做。您可以扩展该策略并将表名转换为小写。

public class LowerCasePhysicalNamingStrategy extends PhysicalNamingStrategyStandardImpl {

    @Override
    public Identifier toPhysicalTableName(Identifier name, JdbcEnvironment context) {
        return context.getIdentifierHelper()
                .toIdentifier(name.getText().toLowerCase());
    }

}

如果除了转换为小写之外还需要其他东西,您可能需要更改此策略。

关于postgresql - 迁移到 Hibernate 5.2 后出现缺少表错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47079203/

相关文章:

postgresql - Dockerfile ENV变量不被接受

postgresql - 多对多约束到同一个父表

c# - asp.net mvc开发者的Java框架推荐

java - 设置像这样的属性时,Spring boot 不会读取配置属性 "export my_variable=something"

spring-boot - Spring Cloud Gateway 可以与非异步的微服务一起使用吗?

java - 设置 Spring 安全性以在未通过身份验证的情况下将用户重定向到登录页面

sql - 如何创建不考虑列顺序的唯一索引(设置?)

postgresql - sequelize postgres 将 fn 'date' 与 jsonb 值结合起来

java - JPA/Hibernate - 父类(super class)查询时如何确定子类类型?

java - 正确测试 Spring 服务