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

QQ登录

只需一步,快速开始

查看: 1673|回复: 5

[结贴] 在ontology标准query动作中condition使用自定义函数时见鬼

[复制链接]

13

主题

39

帖子

175

积分

初级会员

Rank: 2

积分
175
QQ
发表于 2016-6-15 11:58:43 | 显示全部楼层 |阅读模式
版本: 小版本号:
数据库: 服务器操作系统: 应用服务器:
客户端操作系统: 浏览器:

在ontology标准query动作中condition使用自定义函数时见鬼了,平台提示错误,在where 后面出现多余的字符串,平台提示如下:

Caused by: com.justep.exception.BusinessException: 编码: JUSTEP150039; 提示: 执行sql: SELECT  CCPARTYMEMBERS.FID AS CCPARTYMEMBERS, CCPARTYMEMBERS.FADDINFO AS FADDINFO, CCPARTYMEMBERS.FADDINPARTYDATE AS FADDINPARTYDATE, CCPARTYMEMBERS.FEDUCATION AS FEDUCATION, CCPARTYMEMBERS.FHOUSEHOLD AS FHOUSEHOLD, CCPARTYMEMBERS.FMARITALSTATUS AS FMARITALSTATUS, CCPARTYMEMBERS.FMOBILE AS FMOBILE, CCPARTYMEMBERS.FNATION AS FNATION, CCPARTYMEMBERS.FSEX AS FSEX, CCPARTYMEMBERS.FSTAFFLEVEL AS FSTAFFLEVEL, CCPARTYMEMBERS.FTOCCDATE AS FTOCCDATE, CCPARTYMEMBERS.FWORKPOST AS FWORKPOST, CCPARTYMEMBERS.FNAME AS fName, CCPARTYMEMBERS.FOPORGID AS fOPOrgID, SA_OPOrg.sFID AS sFID, SA_OPOrg.sFName AS sFName, CCPARTYMEMBERS.VERSION AS version FROM BA_DANGJIAN_CCPARTYMEMBERS CCPARTYMEMBERS LEFT JOIN SA_OPOrg SA_OPOrg ON CCPARTYMEMBERS.FOPORGID = SA_OPOrg.sID  WHERE  ? , binds: [(SA_OPOrg.sFID LIKE '/LdCYJpsnhYpqmTtWJxy.ogn%')]出错
        at com.justep.exception.BusinessException.create(Unknown Source)
        at com.justep.system.ksql.KSQLUtils.execSqlSelect(Unknown Source)
        ... 31 more


其中  WHERE 后面 多余出来 ? , binds: [ 这些东西,让我很迷茫。。。。。。


就算为了测试把函数定义简化为:
        public static String getConditionWithManageCodes(String manageCodes){
                return "(SA_OPOrg.sFID LIKE '/LdCYJpsnhYpqmTtWJxy.ogn%')";
        }

这样写死,只输出固定值都不行!!!WHERE 后面还是多余出来 ? , binds: [ 这些东西,导致系统报错!

我在ontology 标准动作设置  queryCCPARTYMEMBERSAction 里的 condition 是 设为   :getConditionWithManageCodes('testtest')


但是当我直接 把 condition 设为 (SA_OPOrg.sFID LIKE '/LdCYJpsnhYpqmTtWJxy.ogn%')   这样运行就是正常的。


请帮帮我,这个问题是怎么回事?
(注:自定义函数 fn 的引用都正常,函数也是可以正常调用的)




13

主题

39

帖子

175

积分

初级会员

Rank: 2

积分
175
QQ
 楼主| 发表于 2016-6-15 16:49:51 | 显示全部楼层

刷新数据失败! ,
执行KSQL出错, KSQL: SELECT CCPARTYMEMBERS.*,SA_OPOrg.sFName as sFName,SA_OPOrg.sFID as sFID FROM CCPARTYMEMBERS CCPARTYMEMBERS optional join SA_OPOrg SA_OPOrg on CCPARTYMEMBERS.fOPOrgID = SA_OPOrg WHERE (:getConditionWithManageCodes('dangjianManagement')) LIMIT 0, 20
--> sql: SELECT CCPARTYMEMBERS.FID AS CCPARTYMEMBERS, CCPARTYMEMBERS.FADDINFO AS FADDINFO, CCPARTYMEMBERS.FADDINPARTYDATE AS FADDINPARTYDATE, CCPARTYMEMBERS.FEDUCATION AS FEDUCATION, CCPARTYMEMBERS.FHOUSEHOLD AS FHOUSEHOLD, CCPARTYMEMBERS.FMARITALSTATUS AS FMARITALSTATUS, CCPARTYMEMBERS.FMOBILE AS FMOBILE, CCPARTYMEMBERS.FNATION AS FNATION, CCPARTYMEMBERS.FSEX AS FSEX, CCPARTYMEMBERS.FSTAFFLEVEL AS FSTAFFLEVEL, CCPARTYMEMBERS.FTOCCDATE AS FTOCCDATE, CCPARTYMEMBERS.FWORKPOST AS FWORKPOST, CCPARTYMEMBERS.FNAME AS fName, CCPARTYMEMBERS.FOPORGID AS fOPOrgID, SA_OPOrg.sFID AS sFID, SA_OPOrg.sFName AS sFName, CCPARTYMEMBERS.VERSION AS version FROM BA_DANGJIAN_CCPARTYMEMBERS CCPARTYMEMBERS LEFT JOIN SA_OPOrg SA_OPOrg ON CCPARTYMEMBERS.FOPORGID = SA_OPOrg.sID WHERE ?
--> binds: [(SA_OPOrg.sFID = '/LdCYJpsnhYpqmTtWJxy.ogn%')]
编码:JUSTEP150210
隐藏详细
java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at com.justep.system.action.Engine.invokeActions(Native Method)
at com.justep.system.action.Engine.invokeActions(Unknown Source)
at com.justep.business.server.BusinessServer.doAction(Unknown Source)
at com.justep.business.server.BusinessServer.doExcute(Unknown Source)
at com.justep.business.server.BusinessServer.excute(Unknown Source)
at com.justep.business.server.BusinessServer.excute(Unknown Source)
at com.justep.business.server.BusinessServerServlet.execService(Unknown Source)
at com.justep.business.server.BusinessServerServlet.service(Unknown Source)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:723)
at com.justep.x.bs.BusinessServerServlet.service(Unknown Source)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:723)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:861)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:606)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Thread.java:745)
Caused by: com.justep.exception.BusinessException: 编码: JUSTEP150210; 提示: 执行KSQL出错, KSQL: SELECT CCPARTYMEMBERS.*,SA_OPOrg.sFName as sFName,SA_OPOrg.sFID as sFID FROM CCPARTYMEMBERS CCPARTYMEMBERS optional join SA_OPOrg SA_OPOrg on CCPARTYMEMBERS.fOPOrgID = SA_OPOrg WHERE (:getConditionWithManageCodes('dangjianManagement')) LIMIT 0, 20
--> sql: SELECT CCPARTYMEMBERS.FID AS CCPARTYMEMBERS, CCPARTYMEMBERS.FADDINFO AS FADDINFO, CCPARTYMEMBERS.FADDINPARTYDATE AS FADDINPARTYDATE, CCPARTYMEMBERS.FEDUCATION AS FEDUCATION, CCPARTYMEMBERS.FHOUSEHOLD AS FHOUSEHOLD, CCPARTYMEMBERS.FMARITALSTATUS AS FMARITALSTATUS, CCPARTYMEMBERS.FMOBILE AS FMOBILE, CCPARTYMEMBERS.FNATION AS FNATION, CCPARTYMEMBERS.FSEX AS FSEX, CCPARTYMEMBERS.FSTAFFLEVEL AS FSTAFFLEVEL, CCPARTYMEMBERS.FTOCCDATE AS FTOCCDATE, CCPARTYMEMBERS.FWORKPOST AS FWORKPOST, CCPARTYMEMBERS.FNAME AS fName, CCPARTYMEMBERS.FOPORGID AS fOPOrgID, SA_OPOrg.sFID AS sFID, SA_OPOrg.sFName AS sFName, CCPARTYMEMBERS.VERSION AS version FROM BA_DANGJIAN_CCPARTYMEMBERS CCPARTYMEMBERS LEFT JOIN SA_OPOrg SA_OPOrg ON CCPARTYMEMBERS.FOPORGID = SA_OPOrg.sID WHERE ?
--> binds: [(SA_OPOrg.sFID = '/LdCYJpsnhYpqmTtWJxy.ogn%')]
at com.justep.exception.BusinessException.create(Unknown Source)
at com.justep.system.data.impl.TableUtilsImplement.ksqlSelect(Unknown Source)
at com.justep.system.data.impl.TableUtilsImplement.ksqlSelect(Unknown Source)
at com.justep.system.data.impl.TableUtilsImplement.ksqlSelect(Unknown Source)
at com.justep.system.data.BizData.query(Unknown Source)
at BizProcedure.query(BizProcedure.java:12)
... 27 more
Caused by: com.justep.exception.BusinessException: 编码: JUSTEP150039; 提示: 执行sql: SELECT CCPARTYMEMBERS.FID AS CCPARTYMEMBERS, CCPARTYMEMBERS.FADDINFO AS FADDINFO, CCPARTYMEMBERS.FADDINPARTYDATE AS FADDINPARTYDATE, CCPARTYMEMBERS.FEDUCATION AS FEDUCATION, CCPARTYMEMBERS.FHOUSEHOLD AS FHOUSEHOLD, CCPARTYMEMBERS.FMARITALSTATUS AS FMARITALSTATUS, CCPARTYMEMBERS.FMOBILE AS FMOBILE, CCPARTYMEMBERS.FNATION AS FNATION, CCPARTYMEMBERS.FSEX AS FSEX, CCPARTYMEMBERS.FSTAFFLEVEL AS FSTAFFLEVEL, CCPARTYMEMBERS.FTOCCDATE AS FTOCCDATE, CCPARTYMEMBERS.FWORKPOST AS FWORKPOST, CCPARTYMEMBERS.FNAME AS fName, CCPARTYMEMBERS.FOPORGID AS fOPOrgID, SA_OPOrg.sFID AS sFID, SA_OPOrg.sFName AS sFName, CCPARTYMEMBERS.VERSION AS version FROM BA_DANGJIAN_CCPARTYMEMBERS CCPARTYMEMBERS LEFT JOIN SA_OPOrg SA_OPOrg ON CCPARTYMEMBERS.FOPORGID = SA_OPOrg.sID WHERE ? , binds: [(SA_OPOrg.sFID = '/LdCYJpsnhYpqmTtWJxy.ogn%')]出错
at com.justep.exception.BusinessException.create(Unknown Source)
at com.justep.system.ksql.KSQLUtils.execSqlSelect(Unknown Source)
... 32 more
Caused by: java.sql.SQLException: ORA-00920: 无效的关系运算符
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:331)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:288)
at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:743)
at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:213)
at oracle.jdbc.driver.T4CPreparedStatement.executeForDescribe(T4CPreparedStatement.java:796)
at oracle.jdbc.driver.OracleStatement.executeMaybeDescribe(OracleStatement.java:1031)
at oracle.jdbc.driver.T4CPreparedStatement.executeMaybeDescribe(T4CPreparedStatement.java:836)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1124)
at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3285)
at oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:3329)
at org.apache.tomcat.dbcp.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:96)
at org.apache.tomcat.dbcp.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:96)
... 33 more
回复 支持 反对

使用道具 举报

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
35942
发表于 2016-6-15 19:02:53 | 显示全部楼层
condition中的是内存函数使按照字符串的方式返回的
应该在condition中如下这样写SA_OPOrg.sFID LIKE :getConditionWithManageCodes('testtest')
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



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

使用道具 举报

13

主题

39

帖子

175

积分

初级会员

Rank: 2

积分
175
QQ
 楼主| 发表于 2016-6-16 11:28:20 | 显示全部楼层
那这个思路就没法实现了,因为函数返回的有可能是多个 like, 所以原本我是在函数内返回的 (SA_OPOrg.sFID LIKE *****)OR  (SA_OPOrg.sFID LIKE *****) ……。

在condition中如下这样写SA_OPOrg.sFID LIKE :getConditionWithManageCodes('testtest')的话,只能返回一条 like 条件了。
回复 支持 反对

使用道具 举报

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
35942
发表于 2016-6-16 16:45:32 | 显示全部楼层
那可以在js中用filter实现
condition中只能这样设置,不能直接传一个拼接好的where条件
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



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

使用道具 举报

13

主题

39

帖子

175

积分

初级会员

Rank: 2

积分
175
QQ
 楼主| 发表于 2016-7-6 09:33:59 | 显示全部楼层
谢谢,请结贴!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-19 00:55 , Processed in 0.081639 second(s), 25 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

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