2012-06-29 44 views
4

我正在使用Hibernate 3和Spring 3.我一直在试图填充内存数据库,并且我正在使用Spring来执行此操作。当我尝试这样做,我得到很多的无奈,而这个堆栈跟踪:为了节省你们一些阅读,例外的是:当从spring执行sql脚本时,“用户缺少特权或对象未找到”

user lacks privilege or object not found: XFC_ACTIONSTARTCONDITIONTYPE 

Failed to execute database script; nested exception is org.springframework.jdbc.datasource.init.ScriptStatementFailedException: Failed to execute SQL script statement at line 1 of resource class path resource [ctl_data-scrubd.sql]: INSERT INTO xfc_ActionStartConditionType (actionStartConditionTypeId,actionStartConditionTypeName) VALUES ('1','Start After Action Completed')" type="org.springframework.dao.DataAccessResourceFailureException">org.springframework.dao.DataAccessResourceFailureException: Failed to execute database script; nested exception is org.springframework.jdbc.datasource.init.ScriptStatementFailedException: Failed to execute SQL script statement at line 1 of resource class path resource [ctl_data-scrubd.sql]: INSERT INTO xfc_ActionStartConditionType (actionStartConditionTypeId,actionStartConditionTypeName) VALUES ('1','Start After Action Completed') 
at org.springframework.jdbc.datasource.init.DatabasePopulatorUtils.execute(DatabasePopulatorUtils.java:57) 
at org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseFactory.initDatabase(EmbeddedDatabaseFactory.java:136) 
at org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseFactory.getDatabase(EmbeddedDatabaseFactory.java:111) 
at org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseBuilder.build(EmbeddedDatabaseBuilder.java:113) 
at com.capitaliq.loader.persistence.PersistenceHelper.setUpSessionFactory(PersistenceHelper.java:123) 
at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61) 
at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:71) 
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:174) 
Caused by: org.springframework.jdbc.datasource.init.ScriptStatementFailedException: Failed to execute SQL script statement at line 1 of resource class path resource [ctl_data-scrubd.sql]: INSERT INTO xfc_ActionStartConditionType (actionStartConditionTypeId,actionStartConditionTypeName) VALUES ('1','Start After Action Completed') 
    at org.springframework.jdbc.datasource.init.ResourceDatabasePopulator.executeSqlScript(ResourceDatabasePopulator.java:198) 
    at org.springframework.jdbc.datasource.init.ResourceDatabasePopulator.populate(ResourceDatabasePopulator.java:132) 
    at org.springframework.jdbc.datasource.init.DatabasePopulatorUtils.execute(DatabasePopulatorUtils.java:45) 
Caused by: java.sql.SQLException: user lacks privilege or object not found: XFC_ACTIONSTARTCONDITIONTYPE 
    at org.hsqldb.jdbc.Util.sqlException(Unknown Source) 
    at org.hsqldb.jdbc.JDBCStatement.fetchResult(Unknown Source) 
    at org.hsqldb.jdbc.JDBCStatement.executeUpdate(Unknown Source) 
    at org.springframework.jdbc.datasource.init.ResourceDatabasePopulator.executeSqlScript(ResourceDatabasePopulator.java:184) 
Caused by: org.hsqldb.HsqlException: user lacks privilege or object not found: XFC_ACTIONSTARTCONDITIONTYPE 
    at org.hsqldb.error.Error.error(Unknown Source) 
    at org.hsqldb.SchemaManager.getTable(Unknown Source) 
    at org.hsqldb.ParserDQL.readTableName(Unknown Source) 
    at org.hsqldb.ParserDML.compileInsertStatement(Unknown Source) 
    at org.hsqldb.ParserCommand.compilePart(Unknown Source) 
    at org.hsqldb.ParserCommand.compileStatements(Unknown Source) 
    at org.hsqldb.Session.executeDirectStatement(Unknown Source) 
    at org.hsqldb.Session.execute(Unknown Source) 

我试探性地想说我的问题是这些表不是创建,但我不确定。我已经遵循了关于创建数据库的所有方向,并且在阳光下的每个组合都不起作用。 这里是我的context.xml:

<?xml version="1.0" encoding="UTF-8"?> 
<beans default-lazy-init="true" xmlns="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:tx="http://www.springframework.org/schema/tx" 
    xmlns:jdbc="http://www.springframework.org/schema/jdbc" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
http://www.springframework.org/schema/tx 
http://www.springframework.org/schema/tx/spring-tx-3.0.xsd 
http://www.springframework.org/schema/jdbc 
http://www.springframework.org/schema/jdbc/spring-jdbc-3.0.xsd"> 
<tx:annotation-driven transaction-manager="transactionManager"/> 


<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <!----> 
    <property name="driverClassName" value="org.hsqldb.jdbc.JDBCDriver"/> 
    <property name="url" value="jdbc:hsqldb:mem:mydb;create=true"/> 
    <property name="username" value="sa"/> 
    <property name="password" value=""/> 

</bean> 

    <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> 
    <property name="dataSource" ref="dataSource"/> 
    <property name="configLocation" value="hibernate.cfg.xml.incDTD"/> 
    <property name="hibernateProperties"> 
     <props> 
      <prop key="hibernate.dialect">org.hibernate.dialect.HSQLDialect</prop> 
      <prop key="hibernate.hbm2ddl.auto">create</prop> 
      <prop key="hibernate.show_sql">true</prop> 
      <prop key="hibernate.connection.shutdown">true</prop> 
     </props> 
    </property> 
</bean> 

<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> 
    <property name="sessionFactory" ref="sessionFactory"/> 
</bean> 

<!-- <jdbc:initialize-database data-source="dataSource" enabled="#{systemProperties.INITIALIZE_DATABASE}" ignore-failures="ALL"> 
    <jdbc:script location="classpath:ctl_data-scrubd.sql" /> 
</jdbc:initialize-database>--> 




<bean id="dataSourceInitializer" class="org.springframework.jdbc.datasource.init.DataSourceInitializer"> 
    <property name="dataSource" ref="dataSource"/> 
    <property name="databasePopulator"> 
     <bean class="org.springframework.jdbc.datasource.init.ResourceDatabasePopulator"> 
      <property name="sqlScriptEncoding" value="UTF-8"/> 
      <property name="scripts"> 
       <list> 
        <value>classpath:ctl_data-scrubd.sql</value> 
       </list> 
      </property> 
     </bean> 
    </property> 
</bean> 
</beans> 

所有我想要做的是使用脚本文件来填充这个数据库。不要说我的SQL是错的,因为我知道事实并非如此。任何人有任何想法?

+1

您使用的是哪个版本的HSQLDB? –

+0

@Alex,来自MANIFEST.MF:规范版本:2.0.1-rc2 规范 - 供应商:HSQL开发组 实施 - 标题:标准运行时 实施版本:2.0.1-rc2 实施 - 供应商: HSQL开发组 所以版本2.0.1-rc2 – nook

回答

4

粉化这一个作为宇宙的奥秘;我从来没有让这个工作。只是重复了我填充桌子的方式。

相关问题