我试图了解如何配置我的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;摆脱日志中的警告消息,表示即使表存在,表也不存在(应用程序能够与数据库一起正常运行)?
答案 0 :(得分:0)
我遇到了同样的问题,并通过将属性hibernate.hbm2ddl.jdbc_metadata_extraction_strategy
设置为individually