首先,我知道在stackoverflow上有很多与此相关的问题,但没有一个能解决我的问题。这就是我发布这篇文章的原因。
在尝试连接到SQL server DB并尝试使用hibernate.hbm2ddl.auto字段的" validate“值验证现有的DB结构时,我遇到了一个非常奇怪的问题。但我得到的是错误,
SchemaManagementException: Schema-validation: missing table [chk_groups]下面是我的实体配置,
@Table(name="chk_groups")
public class GroupEntity {
}
@Entity
@Table(name="chk_members")
public class MemberEntity {
}我在属性文件中使用了正确的配置,如下所示:
spring.datasource.driverClassName=com.microsoft.sqlserver.jdbc.SQLServerDriver
spring.datasource.url=jdbc:sqlserver://localhost\instanceName;databaseName=companyDB
spring.datasource.username=sa
spring.datasource.password=sa
spring.jpa.show-sql=true
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.SQLServer2012Dialect
spring.jpa.hibernate.ddl-auto = validate现在,在MS sql server中,默认的模式名称是"dbo“,理想情况下应该在验证DB结构时选择它。但为了确认一下,当我第一次遇到缺失表错误时,我也尝试了手动配置它,如下所示。还是不走运。
@Entity
@Table(name="chk_groups", schema="dbo")
public class GroupEntity {
@Entity
@Table(name="chk_members", schema="dbo")
public class MemberEntity {我也尝试了设置下面的属性,
spring.jpa.properties.hibernate.default_schema= dbo我甚至试过了,
@Entity (name="chk_groups")
public class GroupEntity {
}我百分之百确定DB表存在,因为我可以使用旧的JDBC模板方式访问它,并且可以在它上执行所有CRUD操作,而不会出现任何错误。
当我尝试使用spring boot和data JPA方式通过java代码创建的实体来验证现有的DB结构时,问题就出现了。我不能使用update或create或其他任何东西,因为已经创建了DB结构。我应该使用java实体来映射到它。
我不知道是什么问题导致了这个问题?这是否与用户验证模式所需的任何特定权限有关?有没有办法使用任何权限的DB查询来检查它?或者它可以是其他所有的东西在一起?
我已经尽我所能了。请帮帮我。
发布于 2020-03-14 01:58:12
我通过在application.properties中添加以下属性解决了这个问题
spring.jpa.properties.hibernate.hbm2ddl.jdbc_metadata_extraction_strategy=individuallyhttps://stackoverflow.com/questions/58859044
复制相似问题