将 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/