Closed gx0803 closed 2 years ago
DemoSQLConfig重写 getKey 或 AbstractSQLConfig 直接改 getKey 源码,判断 isOracle() 则直接返回 key,不用 super.getKey(key) // 它会加双引号
DemoSQLConfig重写 getKey 或 AbstractSQLConfig 直接改 getKey 源码,判断 isOracle() 则直接返回 key,不用 super.getKey(key) // 它会加双引号
恩谢谢,已经解决,为了方便进行改造,目前是直接引用的apijson的orm与framework的源码,没有使用maven引入,参考jfinal的demo版本,与jboot进行了集成,方便进行其他扩展。想作为oracle版本贡献一个新的demo工程,不知是否可行。
DemoSQLConfig重写 getKey 或 AbstractSQLConfig 直接改 getKey 源码,判断 isOracle() 则直接返回 key,不用 super.getKey(key) // 它会加双引号
恩谢谢,已经解决,为了方便进行改造,目前是直接引用的apijson的orm与framework的源码,没有使用maven引入,参考jfinal的demo版本,与jboot进行了集成,方便进行其他扩展。想作为oracle版本贡献一个新的demo工程,不知是否可行。
可以的,非常感谢。 对 APIJSONORM/apijson-framework 源码的改动也可以发 Pull Request 贡献哦,会把你也加入这个贡献者名单 https://github.com/Tencent/APIJSON/blob/master/CONTRIBUTING.md
我使用Oracle 数据源,也出现这个问题。重写了getKey,
@Override
public String getKey(String key) {
return ColumnUtil.compatInputKey(key, getTable(), getMethod());
}
但是项目启动报错,错误信息:Caused by: Error : 904, Position : 74, Sql = SELECT FROM (SELECT FROM "Access" WHERE ( (debug = :1 ) ) ORDER BY id) WHERE ROWNUM BETWEEN 0 AND 99999, OriginalSql = SELECT FROM (SELECT FROM "Access" WHERE ( (debug = ?) ) ORDER BY id) WHERE ROWNUM BETWEEN 0 AND 99999, Error Msg = ORA-00904: "ID": 标识符无效。
是哪里还没配置对吗?
我使用Oracle 数据源,也出现这个问题。重写了getKey, @Override public String getKey(String key) { return ColumnUtil.compatInputKey(key, getTable(), getMethod()); } 但是项目启动报错,错误信息:Caused by: Error : 904, Position : 74, Sql = SELECT FROM (SELECT FROM "Access" WHERE ( (debug = :1 ) ) ORDER BY id) WHERE ROWNUM BETWEEN 0 AND 99999, OriginalSql = SELECT FROM (SELECT FROM "Access" WHERE ( (debug = ?) ) ORDER BY id) WHERE ROWNUM BETWEEN 0 AND 99999, Error Msg = ORA-00904: "ID": 标识符无效。
是哪里还没配置对吗?
用最新版(直接下载代码引用),已经把 ORDER BY id 去掉了
已经实现Oracle数据库的万能接口,不过发现在执行查询的时候,后台生成的接口,字段名是加了双引号的。比如请求json如下: 这样在后台生成的sql将会是: 在Oracle中,如果字段名加了引号,则区分大小写,那么该查询就会报错,因为字段是大写的。所以,如果在生成sql时,能生成如下格式的sql,则可以忽略大小写。 不知道是否可以通知配置解决该需求,还是要自己重写生成sql的相关逻辑代码