2016-05-31 64 views
4

我想了解如何配置我的Hibernate与我的MSSQL数据库及其架构正常工作。MSSQL架构和休眠5.1.0.Final(表未找到)

的问题是,表的验证过程中,它会记录(为每个表):

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

我调试Hibernate来找出是什么原因导致这一点,并发现它调用类似:

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

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

好吧,我好像我需要定义架构。但是,在我的entites注解@Table都设置hibernate.default_schema或设置模式抛出异常:

Schema-validation: missing table [SHARED_CONFIGURATION] 

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

ALTER USER sa WITH DEFAULT_SCHEMA = dbo; 

请注意,这发生在任何驱动程序(JTDS,官方MS驱动程序..) 有人可以解释这里发生了什么,以及如何“正确”摆脱日志中的表示即使存在(并且应用程序能够与数据库正常运行)?

+0

解决了吗?我有完全相同的问题。 –

+0

不幸的是我没有 – d1x

回答

0

我有同样的问题,并通过你揭开这背后的原因设置属性hibernate.hbm2ddl.jdbc_metadata_extraction_strategyindividually