2012-04-30 40 views
1

對於我的工作,我必須首次在項目中使用休眠。其實,一切都是由其他人建立的,現在我必須擴大「查詢」的範圍。 我們有一個Tomcat v7.0服務器運行在Eclipse,石英框架用於安排一個查詢每隔5分鐘。這個查詢然後由Hibernate執行/處理。我想我理解了大部分內容,但正如我所說的:我在這裏是一個新手,所以這個問題很愚蠢,但我無法使用Google/StackOverflow找到答案,所以在這裏。嘗試實例化休眠時發生SQLException(UnsupportedOperationException)

因爲我在冬眠的查詢配置中修改了一些東西,所以我總是得到null的結果。經過一番苦戰之後,我已經登錄並運行了。這是日誌的(我認爲)相關部分在啓動Tomcat服務器時,我得到:

30-apr-2012 11:02:32 org.hibernate.cfg.SettingsFactory buildSettings 
WARNING: Could not obtain connection metadata 
java.sql.SQLException: An SQLException was provoked by the following failure: java.lang.UnsupportedOperationException 
    at com.mchange.v2.sql.SqlUtils.toSQLException(SqlUtils.java:106) 
    at com.mchange.v2.sql.SqlUtils.toSQLException(SqlUtils.java:65) 
    at com.mchange.v2.sql.SqlUtils.toSQLException(SqlUtils.java:62) 
    at com.mchange.v2.c3p0.impl.NewPooledConnection.handleThrowable(NewPooledConnection.java:369) 
    at com.mchange.v2.c3p0.impl.NewProxyDatabaseMetaData.getDatabaseMajorVersion(NewProxyDatabaseMetaData.java:3692) 
    at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:126) 
    at org.hibernate.cfg.Configuration.buildSettingsInternal(Configuration.java:2863) 
    at org.hibernate.cfg.Configuration.buildSettings(Configuration.java:2859) 
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1870) 
    at org.springframework.orm.hibernate3.LocalSessionFactoryBean.newSessionFactory(LocalSessionFactoryBean.java:753) 
    at org.springframework.orm.hibernate3.LocalSessionFactoryBean.buildSessionFactory(LocalSessionFactoryBean.java:691) 
    at org.springframework.orm.hibernate3.AbstractSessionFactoryBean.afterPropertiesSet(AbstractSessionFactoryBean.java:211) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1390) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1359) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:540) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:485) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:455) 
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:251) 
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:169) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:248) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:170) 
    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:268) 
    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:104) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1274) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1042) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:539) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:485) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:455) 
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:251) 
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:169) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:248) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:170) 
    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:268) 
    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:104) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1274) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1042) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:539) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:485) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:455) 
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:251) 
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:169) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:248) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:170) 
    at com.mh2o.dbase.manager.HibernateDaoManager.getInstance(HibernateDaoManager.java:17) 
    at com.mh2o.dbase.wbuserlist.WelcomeBoardMgr.<init>(WelcomeBoardMgr.java:11) 
    at com.mh2o.application.cache.welcomeboard.WelcomeCache.synchronize(WelcomeCache.java:44) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
    at java.lang.reflect.Method.invoke(Unknown Source) 
    at org.springframework.util.MethodInvoker.invoke(MethodInvoker.java:283) 
    at org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean$MethodInvokingJob.executeInternal(MethodInvokingJobDetailFactoryBean.java:272) 
    at org.springframework.scheduling.quartz.QuartzJobBean.execute(QuartzJobBean.java:86) 
    at org.quartz.core.JobRunShell.run(JobRunShell.java:216) 
    at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:549) 
Caused by: java.lang.UnsupportedOperationException 
    at sun.jdbc.odbc.JdbcOdbcDatabaseMetaData.getDatabaseMajorVersion(Unknown Source) 
    at com.mchange.v2.c3p0.impl.NewProxyDatabaseMetaData.getDatabaseMajorVersion(NewProxyDatabaseMetaData.java:3678) 
    ... 53 more 
30-apr-2012 11:02:32 org.hibernate.transaction.TransactionFactoryFactory buildTransactionFactory 

所以,似乎是在SQL錯誤。現在,我添加了一些文件,所以我想這就是出現錯誤的地方。該數據庫包含了可以加入到那些已經查詢的表的表,這是我做的:

employeeavailablehours.hbm.xml(其存儲在數據庫表):

<?xml version="1.0"?> 
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> 
<hibernate-mapping package="com.mh2o.application.vo.planningview" schema="N_C"> 
<class name="EmployeeAvailableHours" table="WerknemersBeschikbareUr"> 
    <id column="ID" name="id" type="string"> 
     <generator class="native"/> 
    </id> 
    <property column="InitialenWerknemer" name="initial" generated="never" lazy="false" not-null="true" type="string"/> 
    <property column="Vanaf" name="from" generated="never" lazy="false" not-null="true" type="string"/> 
    <property column="Tot" name="to" generated="never" lazy="false" not-null="true" type="string"/> 
    <property column="Volgnummer" name="indexnumber" generated="never" lazy="false" not-null="true" type="string"/> 
    </class> 
</hibernate-mapping> 

employeeinfo的.hbm.xml(通過有人創建了別人已經由我修改爲包括參考上表):

<?xml version="1.0"?> 
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> 
<hibernate-mapping package="com.mh2o.application.vo.planningview" schema="N_C"> 
<class name="EmployeeInfo" table="WerknemersInfo"> 
    <id column="ID" name="id" type="string"> 
     <generator class="native"/> 
    </id> 
    <property column="Naam" name="name" generated="never" lazy="false" not-null="true" type="string"/> 
    <property column="InitialenWerknemer" name="initial" generated="never" lazy="false" not-null="true" type="string"/> 
    <set name="employeeavailablehours" table="WerknemersBeschikbareUr" inverse="false" lazy="false" fetch="select"> 
     <key> 
      <column name="InitialenWerknemer" not-null="true" /> 
     </key> 
     <one-to-many class="EmployeeAvailableHours" /> 
    </set> 
    </class> 


</hibernate-mapping> 

當然,我已經添加了新表,employeeava在context.xml中創建了一些可用的可用時間,並創建了用於表示xml文件中命名的新表中的數據的類。此外,我編輯了代表現有表格的類別,以便對我添加的表格進行引用。我認爲這不是出現錯誤的地方,查看異常,這就是爲什麼我不在這裏包含這些類的Java源代碼。如果需要,我當然會。

如果你們需要更多信息,請詢問我將編輯我的問題。提前致謝!

+0

你使用jdbc-odbc橋連接使用休眠?檢查這個鏈接是否有幫助http://stackoverflow.com/questions/7289121/using-hibernate-via-an-odbc-connection – Kshitij

+0

據我所知,我們不使用ODBC。我應該注意到,如果我刪除了對XML文件的修改,查詢就可以正常工作,所以我認爲這不是連接問題。 –

回答

1

原來我做的事情完全錯了:我用作外鍵的密鑰根本不能用作外鍵。改變與其他人加入一張桌子的完整設置解決了這個問題。

相關問題