移动到Hibernate 5.2后丢失表错误

时间:2017-11-02 15:38:34

标签: 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

但它没有帮助。任何想法如何解决问题?

1 个答案:

答案 0 :(得分:0)

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

public class LowerCasePhysicalNamingStrategy extends PhysicalNamingStrategyStandardImpl {

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

}

如果您需要除转换为小写之外的其他内容,您可能需要更改此策略。