起步软件技术论坛
搜索
 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 8042|回复: 12

[结贴] 自定义queryAction查询语句自己写的SQL报错

[复制链接]

46

主题

189

帖子

1218

积分

金牌会员

Rank: 6Rank: 6

积分
1218
QQ
发表于 2013-11-4 16:41:59 | 显示全部楼层 |阅读模式
版本: X5.2.5 小版本号:
数据库: MS SQLServer 服务器操作系统: Windows 应用服务器: Tomcat
客户端操作系统: Windows 其它 浏览器: Chrome
自定义Action,参数和bizQueryProcedure都一样,只是select语句在代码里面自己重写了,用的是SQL而不是KSQL,看了语法没错,但页面加载的时候总报错,麻烦帮忙看一下。。。
报错信息:
  1. com.justep.model.exception.ModelException: java.lang.RuntimeException: compile error :
  2. E:\X5.2.5\X5.2.5\model\BIZ\OA\workTime\logic\code\dsrc\WorkTime.java:30: 找不到符号
  3. 符号: 方法 select(java.lang.String,,java.lang.String)
  4. 位置: 类 com.justep.system.data.SQL
  5. Table result=SQL.select(strSql, null, dataModel);
  6. ^
  7. 1 错误

  8. at com.justep.system.action.Engine.invokeActions(Unknown Source)
  9. at com.justep.business.server.BusinessServer.doAction(Unknown Source)
  10. at com.justep.business.server.BusinessServer.doExcute(Unknown Source)
  11. at com.justep.business.server.BusinessServer.excute(Unknown Source)
  12. at com.justep.business.server.BusinessServerServlet.execService(Unknown Source)
  13. at com.justep.business.server.BusinessServerServlet.service(Unknown Source)
  14. at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
  15. at com.justep.x.bs.BusinessServerServlet.service(Unknown Source)
  16. at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
  17. at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
  18. at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
  19. at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
  20. at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
  21. at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
  22. at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
  23. at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
  24. at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
  25. at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:857)
  26. at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
  27. at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
  28. at java.lang.Thread.run(Thread.java:595)
  29. Caused by: java.lang.RuntimeException: compile error :
  30. E:\X5.2.5\X5.2.5\model\BIZ\OA\workTime\logic\code\dsrc\WorkTime.java:30: 找不到符号
  31. 符号: 方法 select(java.lang.String,,java.lang.String)
  32. 位置: 类 com.justep.system.data.SQL
  33. Table result=SQL.select(strSql, null, dataModel);
  34. ^
  35. 1 错误

  36. at com.justep.model.impl.ModelImpl$DynamicClassManager.compile(Unknown Source)
  37. at com.justep.model.impl.ModelImpl$DynamicClassManager.getDynamicClass(Unknown Source)
  38. at com.justep.model.impl.ModelImpl$DynamicClassManager.getDynamicMethod(Unknown Source)
  39. at com.justep.model.impl.ModelImpl.getModelMethod(Unknown Source)
  40. at com.justep.system.action.Engine.invokeActions(Native Method)
  41. ... 21 more

  42. url:/UI/system/service/common/bizAction.j
  43. param:{"process":"/OA/workTime/process/scheduling/schedulingProcess","activity":"scheduling","actionFlag":"__action_0__","executor":"BF047D084F3F4C97874418C920C699C8","executeContext":"","action":"queryShift","parameters":{"variables":{},"filter":"(fUseStatus='1')","offset":0,"limit":20,"columns":"cName,fCode","orderBy":"fCode ASC"},"translateParameter":{"dataType":"row-list","transformIdcolumn":true,"useNamespace":true,"cellnameByRelation":false,"rowsConfig":{"concept":"OA_WM_SHIFT","sequence":"fCode,cName"}}}
复制代码
自定义queryAction代码:
  1. public static Table queryShift(String concept,String idColumn,String select,String from,String condition,
  2.                                               List range,String filter,Boolean distinct,Integer offset,Integer limit,
  3.                                               String columns,String orderBy,String aggregate,String aggregateColumns,Map variables,
  4.                                               String dataModel,String fnModel){
  5.                
  6.                 java.sql.Connection conn=null;
  7.                 dataModel="/OA/workTime/data";
  8.                 concept="OA_WM_SHIFT";
  9.                 idColumn="OA_WM_SHIFT.fCode";
  10.                 conn=com.justep.model.ModelUtils.getConnectionInTransaction(dataModel);
  11.                 String strSql="";
  12.                 strSql="SELECT OA_WM_SHIFT.fCode, OA_WM_SHIFT.fName+' '"
  13.                                   +"+case when (fTime3 is null) then right(CONVERT(varchar(16), FTIME1, 120),5)+'-'+right(CONVERT(varchar(16), FTIME2, 120),5) "
  14.                                   +"when (FTIME3 is not null) and (FTIME5 is not null) "
  15.                                   +"then right(CONVERT(varchar(16), FTIME1, 120),5)+'-'+right(CONVERT(varchar(16), FTIME2, 120),5)+',"
  16.                                   +"'+right(CONVERT(varchar(16), FTIME3, 120),5)+'-'+right(CONVERT(varchar(16), FTIME4, 120),5)+','"
  17.                                   +"+right(CONVERT(varchar(16), FTIME5, 120),5)+'-'+right(CONVERT(varchar(16), FTIME6, 120),5) "
  18.                                   +"else right(CONVERT(varchar(16), FTIME1, 120),5)+'-'+right(CONVERT(varchar(16), FTIME2, 120),5)+',"
  19.                                   +"'+right(CONVERT(varchar(16), FTIME3, 120),5)+'-'+right(CONVERT(varchar(16), FTIME4, 120),5) end as cName  FROM OA_WM_SHIFT";
  20.                
  21.             Table result=SQL.select(strSql, null, dataModel);
  22.             return result;
  23.                
  24.         }
复制代码

63

主题

552

帖子

763

积分

高级会员

Rank: 4

积分
763
QQ
发表于 2013-11-4 16:48:12 | 显示全部楼层
本帖最后由 comeonbabyoh 于 2013-11-4 16:52 编辑

strSql="SELECT OA_WM_SHIFT.fCode, OA_WM_SHIFT.fName+' '"+"+case
这里多了一个符号,是不是?


虽然你的表白打动了我,但是我们还是做朋友吧;
尽管很感谢你喜欢上我,但是我们还是做朋友吧。
回复 支持 反对

使用道具 举报

46

主题

189

帖子

1218

积分

金牌会员

Rank: 6Rank: 6

积分
1218
QQ
 楼主| 发表于 2013-11-4 16:52:31 | 显示全部楼层
comeonbabyoh 发表于 2013-11-4 16:48
strSql="SELECT OA_WM_SHIFT.fCode, OA_WM_SHIFT.fName+' '"+"+case
这里多了一个符号,是不是? ...

那里是代码太长,做换行处理,客户端取出语句执行没有语法错误的。。
SELECT OA_WM_SHIFT.fCode, OA_WM_SHIFT.fName+' '+case when (fTime3 is null) then right(CONVERT(varchar(16), FTIME1, 120),5)+'-'+right(CONVERT(varchar(16), FTIME2, 120),5) when (FTIME3 is not null) and (FTIME5 is not null) then right(CONVERT(varchar(16), FTIME1, 120),5)+'-'+right(CONVERT(varchar(16), FTIME2, 120),5)+','+right(CONVERT(varchar(16), FTIME3, 120),5)+'-'+right(CONVERT(varchar(16), FTIME4, 120),5)+','+right(CONVERT(varchar(16), FTIME5, 120),5)+'-'+right(CONVERT(varchar(16), FTIME6, 120),5) else right(CONVERT(varchar(16), FTIME1, 120),5)+'-'+right(CONVERT(varchar(16), FTIME2, 120),5)+','+right(CONVERT(varchar(16), FTIME3, 120),5)+'-'+right(CONVERT(varchar(16), FTIME4, 120),5) end as cName  FROM OA_WM_SHIFT
回复 支持 反对

使用道具 举报

63

主题

552

帖子

763

积分

高级会员

Rank: 4

积分
763
QQ
发表于 2013-11-4 16:53:23 | 显示全部楼层
lxl8611 发表于 2013-11-4 16:52
那里是代码太长,做换行处理,客户端取出语句执行没有语法错误的。。
SELECT OA_WM_SHIFT.fCode, OA_WM_S ...

是好长的,你取出来到数据库试试,就是提示你这里多了符号


虽然你的表白打动了我,但是我们还是做朋友吧;
尽管很感谢你喜欢上我,但是我们还是做朋友吧。
回复 支持 反对

使用道具 举报

46

主题

189

帖子

1218

积分

金牌会员

Rank: 6Rank: 6

积分
1218
QQ
 楼主| 发表于 2013-11-4 17:00:57 | 显示全部楼层
comeonbabyoh 发表于 2013-11-4 16:53
是好长的,你取出来到数据库试试,就是提示你这里多了符号

我把语句改成最简单的只查字段也报一样的错:
  1. public static Table queryShift(String concept,String idColumn,String select,String from,String condition,
  2.                                               List range,String filter,Boolean distinct,Integer offset,Integer limit,
  3.                                               String columns,String orderBy,String aggregate,String aggregateColumns,Map variables,
  4.                                               String dataModel,String fnModel){
  5.                
  6.                 java.sql.Connection conn=null;
  7.                 dataModel="/OA/workTime/data";        
  8.                 conn=com.justep.model.ModelUtils.getConnectionInTransaction(dataModel);
  9.                 String strSql="";        
  10.                strSql="SELECT OA_WM_SHIFT.fCode,OA_WM_SHIFT.fName as cName FROM OA_WM_SHIFT";
  11.             Table result=SQL.select(strSql, null, dataModel);
  12.             return result;
  13.                
  14.         }
复制代码
回复 支持 反对

使用道具 举报

63

主题

552

帖子

763

积分

高级会员

Rank: 4

积分
763
QQ
发表于 2013-11-4 17:04:08 | 显示全部楼层
SELECT OA_WM_SHIFT.fCode,OA_WM_SHIFT.fName as cName FROM OA_WM_SHIFT
这个错了是因为。。。如下
SELECT OA_WM_SHIFT.fCode,OA_WM_SHIFT.fName as cName FROM OA_WM_SHIFT OA_WM_SHIFT
加个别名


虽然你的表白打动了我,但是我们还是做朋友吧;
尽管很感谢你喜欢上我,但是我们还是做朋友吧。
回复 支持 反对

使用道具 举报

46

主题

189

帖子

1218

积分

金牌会员

Rank: 6Rank: 6

积分
1218
QQ
 楼主| 发表于 2013-11-4 17:07:52 | 显示全部楼层
本帖最后由 lxl8611 于 2013-11-4 17:11 编辑
comeonbabyoh 发表于 2013-11-4 17:04
SELECT OA_WM_SHIFT.fCode,OA_WM_SHIFT.fName as cName FROM OA_WM_SHIFT
这个错了是因为。。。如下
SELECT ...

刚刚加了,报一样的错。我这里用的是SQL不是KSQL,应该不加别名也可以的吧。。
我需要在语句字段上加case when判断,可是2.5版本的KSQL用case总是报错,所以只好改用SQL。。
回复 支持 反对

使用道具 举报

50

主题

483

帖子

1163

积分

金牌会员

Rank: 6Rank: 6

积分
1163
QQ
发表于 2013-11-4 17:10:22 | 显示全部楼层
lxl8611 发表于 2013-11-4 17:07
刚刚加了,报一样的错。我这里用的是SQL不是KSQL,应该不加别名也可以的吧。。 ...

不行的,其实ksql和sql查询的一些规则是一样的,只是进行了封装而已,所以还是要加的
回复 支持 反对

使用道具 举报

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
35942
发表于 2013-11-4 17:30:43 | 显示全部楼层
把java文件设置为源码路径,根据java文件中的错误提示进行修改
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



如按照该方法解决,请及时跟帖,便于版主结贴
回复 支持 反对

使用道具 举报

46

主题

189

帖子

1218

积分

金牌会员

Rank: 6Rank: 6

积分
1218
QQ
 楼主| 发表于 2013-11-4 17:31:34 | 显示全部楼层
悲催的程序员 发表于 2013-11-4 17:10
不行的,其实ksql和sql查询的一些规则是一样的,只是进行了封装而已,所以还是要加的 ...

改成这样,也是报原来的错。
  1. public static Table queryShift(String concept,String idColumn,String select,String from,String condition,
  2.                                               List range,String filter,Boolean distinct,Integer offset,Integer limit,
  3.                                               String columns,String orderBy,String aggregate,String aggregateColumns,Map variables,
  4.                                               String dataModel,String fnModel){
  5.                 try{
  6.                 java.sql.Connection conn=null;
  7.                 dataModel="/OA/workTime/data";       
  8.                 conn=com.justep.model.ModelUtils.getConnectionInTransaction(dataModel);
  9.                 String strSql="";
  10.                 strSql="SELECT OA_WM_SHIFT.fCode,OA_WM_SHIFT.fName as cName FROM OA_WM_SHIFT OA_WM_SHIFT";
  11.                
  12.             Table result=SQL.select(strSql, null, dataModel);
  13.             return result;
  14.                 }
  15.                 catch (Exception  e){
  16.                      System.out.println("ds.createVersion Exception :"+e.getMessage());
  17.                 }
  18.         }
复制代码
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|X3技术论坛|Justep Inc.    

GMT+8, 2024-5-20 13:20 , Processed in 0.113873 second(s), 25 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表