postgresql 迁移到 人大金仓 的 level 关键字问题

在未对level关键字做任何处理的情况下,会报下面的错误:

Caused by: com.kingbase8.util.KSQLException: ERROR: CONNECT BY clause required in this query block
  Position: 57 At Line: 1, Line Position: 57
    at com.kingbase8.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:3551)
    at com.kingbase8.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:2993)
    at com.kingbase8.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:405)
    at com.kingbase8.jdbc.KbStatement.executeInternal_(KbStatement.java:784)
    at com.kingbase8.jdbc.KbStatement.execute(KbStatement.java:676)
    at com.kingbase8.jdbc.KbPreparedStatement.executeWithFlags(KbPreparedStatement.java:286)
    at com.kingbase8.jdbc.KbPreparedStatement.execute(KbPreparedStatement.java:265)
    at com.zaxxer.hikari.pool.ProxyPreparedStatement.execute(ProxyPreparedStatement.java:44)
    at com.zaxxer.hikari.pool.HikariProxyPreparedStatement.execute(HikariProxyPreparedStatement.java)
    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:498)
    at org.apache.ibatis.logging.jdbc.PreparedStatementLogger.invoke(PreparedStatementLogger.java:59)
    at com.sun.proxy.$Proxy182.execute(Unknown Source)
    at org.apache.ibatis.executor.statement.PreparedStatementHandler.query(PreparedStatementHandler.java:63)
    at org.apache.ibatis.executor.statement.RoutingStatementHandler.query(RoutingStatementHandler.java:79)
    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:498)

有以下处理方式:

1. mybatis内置的selectById:TableField加上双引号

@TableField("\"level\"")
private Integer level;

2. sql语句: 上给 level 加上双引号

select id,"level" from table

3. sql语句: 表的别名取字段

select t.id,t.level from table t

posted on 2023-06-06 15:36  略懂的货货  阅读(1586)  评论(0)    收藏  举报

导航