2014-01-10 52 views
0

我有一些从配置XML文件生成的HQL查询(〜2000)。如何测试HQL查询编译?

当然,如果集成测试涵盖所有这些情况,那将是非常好的,但不幸的是,这是来自我公司认为测试的时代之前的旧代码是一个好主意。

编写覆盖所有这些文件的完整集成测试显然已经超出了范围。然而,它会帮助您找到导致错误查询的配置文件,如from SomeRandomUnmappedClassselect propertyThatDoesNotExist from SomeClass。如果没有设置参数并且没有与实际数据库进行通信,快速“编译检查”应该可以做到。但是,这怎么做呢?

(顺便说一句:我停留在古代的Hibernate 3.3.2)

+0

为什么不创建使用[HSQLDB](http://hsqldb.org/)测试数据库,这是一个内存数据库理想地适合于测试目的。 – Bohemian

+0

因为生成的查询可以有参数,而我没有参数的值。 – yankee

回答

0

其实这是该死的简单:既然你有集成测试的设置启动与HSQLDB休眠上下文反正你可以执行:

session.createQuery(hql); 

这会返回一个查询对象,通常您会设置参数然后执行查询。但是在createQuery期间 - 调用期望的检查已经执行。如果出现错误,则抛出异常。只需删除参数设置和执行!

(有时溶液是太明显;-))