如何在 activejdbc 中执行 CTE 查询?

How do I do a CTE query in activejdbc?

我需要执行一个通用 Table 表达式 (CTE) 查询,但不知道如何在 activejdbc 中执行此操作。数据库是 postgres 9.5

正在做:

Model.findbySQL("with cte as (...) select * from cte"

给我错误:

java.lang.IllegalArgumentException: query must be 'select' query at org.javalite.activejdbc.DB.find(DB.java:463) at org.javalite.activejdbc.LazyList.hydrate(LazyList.java:329) at org.javalite.activejdbc.LazyList.toJson(LazyList.java:245) at com.torfiles.webservice.Endpoints.lambda$search(Endpoints.java:91) at spark.RouteImpl.handle(RouteImpl.java:61) at spark.http.matching.Routes.execute(Routes.java:61) at spark.http.matching.MatcherFilter.doFilter(MatcherFilter.java:126) at spark.embeddedserver.jetty.JettyHandler.doHandle(JettyHandler.java:50) at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:189) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119) at org.eclipse.jetty.server.Server.handle(Server.java:517) at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308) at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242) at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261) at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95) at org.eclipse.jetty.io.SelectChannelEndPoint.run(SelectChannelEndPoint.java:75) at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213) at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147) at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654) at org.eclipse.jetty.util.thread.QueuedThreadPool.run(QueuedThreadPool.java:572) at java.lang.Thread.run(Thread.java:748)

这是一个已于 2016 年 4 月修复的错误:https://github.com/javalite/activejdbc/issues/483 请升级到版本 1.4.13 以通过此操作。