2012-02-08 112 views
0

我正在运行我的junit测试,通过Eclipse,一切正常,包括插入波纹管。 当我运行它通过蚂蚁从COMAND行我得到:Junit测试在Ant中失败,但在Eclipse中成功完成

org.springframework.jdbc.BadSqlGrammarException: StatementCallback;错误的SQL语法[insert into experiment(id,name,description,journal,user_access)values('1','experimentOne','first experiment','references 1','public')];嵌套异常是java.sql.SQLException:列计数在语句中不匹配[insert into experiment_metadata(id,name,description,journal_references,user_access)。

可以帮助吗?我确信sql语句是正确的。 在此先感谢。

+1

查询生成有问题。查询执行是'insert into experiment',但是在例外情况下,您将'insert into experiment_metadata'。你可以检查你是否没有做任何动态查询更新w /拦截器或修改的jdbc驱动程序。 '_metadata'字符串显然已被您的代码更新,而不是春天的。另外,你使用什么数据库? – 2012-02-08 01:41:21

+0

对不起,我发送它之前修改了查询,它实际上是插入到experiment_metadata中。它抱怨错误的列数......它看起来像加载了一个错误的模式,即使:hibernate.hbm2ddl.auto = create-drop,正如我提到它在Eclipse中工作得很好。 – 2012-02-08 20:25:28

+0

你可以将示例项目发布到github的某处吗?另外,您使用的数据库是否可以设置调试点并验证模式实际上是否已被删除。 – 2012-02-08 22:29:14

回答

2

答:我想通了。我们有一个包含旧类的jar,它反映了我们类路径中的旧模式。该jar包含在ant中,未包含在Eclipse中。

关于如何导出模式:
的LocalSessionFactoryBean localfactory1 =(LocalSessionFactoryBean的)this.getApplicationContext()的getBean( “& readOnlySessionFactory”);

String customImportFile = "customImportFile.txt"; 
    System.err.println("Performing schema export with custom import file: '" 
      + customImportFile + "'."); 
    System.err.println("------JdbcTemplate" + jdbcTemplate.getDataSource()); 


    try { 
    SchemaExport export = new SchemaExport(localfactory1.getConfiguration(), localfactory1.getDataSource().getConnection()); 
    export.setOutputFile(customImportFile); 
    export.create(false, true); 
    } 
    catch (Exception exp) 
    { 
     exp.printStackTrace(); 
    } 
+0

好的。将答案标记为已接受:-) – 2012-02-15 02:27:08

相关问题