我已經將運行在Wildfly 9上的Web應用程序從使用SQL身份驗證遷移到使用Windows身份驗證。我還需要更新一個直接在數據庫上執行一些維護任務的Java實用程序。 Web應用程序工作正常,但該實用程序似乎忽略了休眠配置中的默認架構設置。跟蹤SQL Server顯示來自wildfly的查詢有myschema.<table name>
,但來自我的實用程序的查詢只有<table name>
。爲什麼在使用SQL Server集成安全性時忽略默認模式?
在SQL Server上有一個登錄名(DOMAIN \ myservice),用於運行野蠻服務的域帳戶,並且我將util作爲同一個帳戶運行。
登錄被映射到數據庫上具有相同名稱(DOMAIN \ myservice)的用戶。
用戶具有dbo的默認模式。
UTIL-的hibernate.cfg.xml
<hibernate-configuration>
<session-factory>
<property name="hibernate.dialect">org.hibernate.dialect.SQLServer2008Dialect</property>
<property name="hibernate.connection.driver_class">com.microsoft.sqlserver.jdbc.SQLServerDriver</property>
<property name="hibernate.connection.url">jdbc:sqlserver://sqlhost\INSTANCE:1433;databaseName=MYAPP;integratedSecurity=true</property>
<property name="hibernate.connection.pool_size">5</property>
<property name="hibernate.default_schema">myschema</property>
<property name="hibernate.show_sql">true</property>
<mapping resource="....hbm.xml"/>
<mapping resource="...hbm.xml"/>
...
</session-factory>
</hibernate-configuration>
戰爭的hibernate.cfg.xml
<hibernate-configuration>
<session-factory>
<property name="hibernate.connection.datasource">jdbc/MYAPP</property>
<property name="hibernate.default_schema">myschema</property>
<mapping resource="....hbm.xml"/>
<mapping resource="...hbm.xml"/>
...
</session-factory>
</hibernate-configuration>
wildfly數據源
<datasource jndi-name="java:jdbc/MYAPP" pool-name="MyDataSource" enabled="true">
<connection-url>jdbc:sqlserver://sqlhost\INSTANCE;databaseName=MYAPP;integratedSecurity=true</connection-url>
<driver>sqljdbc4.jar</driver>
<pool>
<max-pool-size>10</max-pool-size>
</pool>
<validation>
<valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.mssql.MSSQLValidConnectionChecker" />
<validate-on-match>false</validate-on-match>
<background-validation>true</background-validation>
<background-validation-millis>30000</background-validation-millis>
</validation>
</datasource>
在記錄我的工具我看到:
SettingFactory:222 - Default schema: myschema
但是後面我看到的錯誤:
com.microsoft.sqlserver.jdbc.SQLServerException: Invalid object name '<table name>'
在表格中MYSCHEMA。
我曾嘗試更新與Hibernate映射文件:
<hibernate-mapping schema="myschema">
<class name="MyType" table="table_name">
而且
<hibernate-mapping>
<class name="MyType" schema="myschema" table="table_name">
但是,這也不能工作。事情
版本
- Wildfly 9.0.2.Final
- 的Hibernate 3.5.6決賽
- 微軟SQL JDBC 4.1
- 的SQL Server 2014
- JRE 7u67