2016-03-02 93 views
2

我已經將運行在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

回答

1

原來t他的實用程序使用了一個我沒有注意到的SQLQuery,而且似乎hibernate並沒有將缺省模式名稱自動附加到該名稱。

相關問題