MSSQL架构& Hibernate 5.1.0.Final(未找到表)

时间:2016-05-31 06:31:26

标签: sql-server database hibernate jpa orm

我试图了解如何配置我的Hibernate以便与我的MSSQL DB及其模式一起正常工作。

问题是在验证表时,它会记录(对于每个表):

org.hibernate.tool.schema.extract.internal.InformationExtractorJdbcDatabaseMetaDataImpl
- HHH000262: Table not found SHARED_CONFIGURATION

我调试了Hibernate以找出导致这种情况的原因并发现它调用了类似的东西:

EXECUTE [mydb]..sp_columns N'SHARED_CONFIGURATION',N'',N'mydb'

请注意,第二个参数是模式名称,并且传递了空字符串。当我尝试对DB运行此查询时,它返回空结果集。但是当我通过“dbo'作为第二个参数,结果集不为空(意味着Hibernate应该调用它)。

好的,所以我觉得我似乎需要定义架构。但是在我的entites上设置hibernate.default_schema或在@Table注释中设置模式都引发了异常:

Schema-validation: missing table [SHARED_CONFIGURATION]

所以现在我想知道什么是真正的问题。我还想在我的数据库中设置默认架构,但是不允许(不能改变用户' sa,因为它不存在或者您没有权限。)即使用用户'执行也是如此。 SA'本身:

ALTER USER sa WITH DEFAULT_SCHEMA = dbo;

请注意,任何驱动程序都会发生这种情况(JTDS,官方MS驱动程序..) 有人可以解释这里发生了什么以及如何正确地#34;摆脱日志中的警告消息,表示即使表存在,表也不存在(应用程序能够与数据库一起正常运行)?

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题,并通过将属性hibernate.hbm2ddl.jdbc_metadata_extraction_strategy设置为individually

来解决