Groovy Eval函数评估SQL查询的某些部分

时间:2018-08-29 05:40:07

标签: java sql groovy

我必须在sqlquery上使用groovy Eval()并在运行时对其求值。 我正在使用

query =groovy.util.Eval.x(sqlQuery,sqlQuery); and 
sqlQuery =select Distinct <col1> from Tablename where criteira1=<cond> AND Clas1.getDateonDBType(fieldname) 

我必须评估Clas1.getDateonDBType(fieldname),它是运行时的一种Java方法,因为这取决于我连接到的DB。 Eval函数能够获取sqlQuery但抛出

之类的异常
Caused by: org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
Script1.groovy: 1: unexpected token: DISTINCT @ line 1, column 8.

我不熟悉groovy。请帮助我找出问题所在

1 个答案:

答案 0 :(得分:0)

说实话,我想你走错了路

Groovy eval可以评估Groovy脚本,而不是直接评估SQL。 SQL由您的数据库评估。您的Groovy-Script可以包装SQL语句,与数据库建立连接,然后数据库执行SQL并返回结果。

据我了解,您想使用Groovy是因为您需要评估getDateonDBType()。你不能做这样的事情:

String dateonDBType = Clas1.getDateonDBType(fieldname)
sqlQuery = "select Distinct <col1> from Tablename where criteira1=<cond> AND "+dateonDBType

这将在Java中正确构造正确的sqlQuery,然后您可以连接到DB并执行SQL,而不必评估Groovy代码。

希望有帮助