问题标签 [sql2o]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
666 浏览

java - sql2o 无法在 oracle DB 上删除

我正在尝试在项目中使用 sq2o。它在 MSSQL 下运行良好,但在切换到 Oracle DB 12c 时会出现删除问题

当我使用这种方法时,我会得到相当神秘的日志:

不允许操作 org.sql2o.Sql2oException:executeUpdate 出错,在 com.fusionrisk.authorisation.impl.AuthorisationRoleDao.delete(AuthorisationRoleDao.java:55) 处的 org.sql2o.Query.executeUpdate(Query.java:527) 不允许操作在 com.fusionrisk.authorisation.impl.AuthorisationService.deleteUserRole(AuthorisationService.java:43) 在 fusionrisk.rest.AuthorisationResource.deleteRole(AuthorisationResource.java:59) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect .NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke(Method.java:498) 在 org.glassfish.jersey。 server.model.internal.ResourceMethodInvocationHandlerFactory$1。在 org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:151) 在 org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher) 调用(ResourceMethodInvocationHandlerFactory.java:81) .java:171) 在 org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$ResponseOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:152) 在 org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java :104) 在 org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:387) 在 org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:331) 在 org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:271) 在 org.glassfish.jersey 的 org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:103)。 internal.Errors$1.call(Errors.java:271) at org.glassfish.jersey.internal.Errors$1.call(Errors.java:267) at org.glassfish.jersey.internal.Errors.process(Errors.java: 315) 在 org.glassfish.jersey.internal.Errors.process(Errors.java:297) 在 org.glassfish.jersey.internal.Errors.process(Errors.java:267) 在 org.glassfish.jersey.process.internal .RequestScope.runInScope(RequestScope.java:297) 在 org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:254) 在 org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:1028) 在org.glassfish.jersey.servlet.WebComponent。org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:381) 的服务(WebComponent.java:372) org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:344) 的 org.glassfish .jersey.servlet.ServletContainer.service(ServletContainer.java:221) 在 org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:800) 在 org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler .java:1669) 在 org.eclipse.jetty.servlets.UserAgentFilter.doFilter(UserAgentFilter.java:83) 在 org.eclipse.jetty.servlets.GzipFilter.doFilter(GzipFilter.java:300) 在 org.eclipse.jetty。 servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652) 在 org.eclipse.jetty.websocket.server.WebSocketUpgradeFilter.doFilter(WebSocketUpgradeFilter.java:224) 在 org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)

在 com.trmsys.cargo.shield.web.filter.PrincipalShiroFilter.doFilter(PrincipalShiroFilter.java:228) 在 org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652) 在 org.apache.shiro .web.servlet.AbstractShiroFilter.executeChain(AbstractShiroFilter.java:449) 在 com.trmsys.cargo.shield.shiro.web.ShieldFilter.access $100(ShieldFilter.java:34) 在 com.trmsys.cargo.shield.shiro。 web.ShieldFilter$1.call(ShieldFilter.java:99) 在 org.apache.shiro.subject.support.SubjectCallable.doCall(SubjectCallable.java:90) 在 org.apache.shiro.subject.support.SubjectCallable.call(SubjectCallable .java:83) 在 org.apache.shiro.subject.support.DelegatingSubject.execute(DelegatingSubject.java:383) 在 com.trmsys.cargo.shield.shiro.web.ShieldFilter.doFilterInternal(ShieldFilter.java:95) 在组织。apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125) 在 org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652) 在 com.trmsys.cargo.security.cors。 impl.CorsFilter.handleSimpleCORS(CorsFilter.java:345) at com.trmsys.cargo.security.cors.impl.CorsFilter.doFilter(CorsFilter.java:188) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter( ServletHandler.java:1652) 在 com.trmsys.cargo.rs.shared.impl.http.RequestLogFilter.doFilter(RequestLogFilter.java:59) 在 org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java: 1652) 在 org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:221) 在 org.eclipse.jetty 的 org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:585)。server.handler.ContextHandler.doHandle(ContextHandler.java:1125) 在 org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:515) 在 org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler. java:185) at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1059) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) at org.eclipse .jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:215) 在 org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97) 在 org.eclipse.jetty.server.Server.handle (Server.java:497) 在 org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:310) 在 org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:248) 在 org.eclipse。码头。io.AbstractConnection$2.run(AbstractConnection.java:540) at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:620) at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run( java.lang.Thread.run(Thread.java:745) 处的 QueuedThreadPool.java:540) 原因:java.sql.SQLException: oracle.jdbc.driver.OracleStatement.getGeneratedKeys(OracleStatement.java:5174) 不允许操作在 oracle.jdbc.driver.OracleStatementWrapper.getGeneratedKeys(OracleStatementWrapper.java:352) 在 org.apache.commons.dbcp.DelegatingStatement.getGeneratedKeys(DelegatingStatement.java:315) 在 org.apache.commons.dbcp.DelegatingStatement.getGeneratedKeys(DelegatingStatement .java:315) at org.sql2o.Query.executeUpdate(Query.java:522) ...省略了 67 个常用帧java:540) 在 org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:620) 在 org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:540) 在 java. lang.Thread.run(Thread.java:745) 原因:java.sql.SQLException:在 oracle.jdbc.driver.OracleStatementWrapper 的 oracle.jdbc.driver.OracleStatement.getGeneratedKeys(OracleStatement.java:5174) 不允许操作。 getGeneratedKeys(OracleStatementWrapper.java:352) 在 org.apache.commons.dbcp.DelegatingStatement.getGeneratedKeys(DelegatingStatement.java:315) 在 org.apache.commons.dbcp.DelegatingStatement.getGeneratedKeys(DelegatingStatement.java:315) 在 org.sql2o .Query.executeUpdate(Query.java:522) ...省略了67个常用帧java:540) 在 org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:620) 在 org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:540) 在 java. lang.Thread.run(Thread.java:745) 原因:java.sql.SQLException:在 oracle.jdbc.driver.OracleStatementWrapper 的 oracle.jdbc.driver.OracleStatement.getGeneratedKeys(OracleStatement.java:5174) 不允许操作。 getGeneratedKeys(OracleStatementWrapper.java:352) 在 org.apache.commons.dbcp.DelegatingStatement.getGeneratedKeys(DelegatingStatement.java:315) 在 org.apache.commons.dbcp.DelegatingStatement.getGeneratedKeys(DelegatingStatement.java:315) 在 org.sql2o .Query.executeUpdate(Query.java:522) ...省略了67个常用帧620) at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:540) at java.lang.Thread.run(Thread.java:745) 原因:java.sql.SQLException:操作不在 oracle.jdbc.driver.OracleStatementWrapper.getGeneratedKeys(OracleStatementWrapper.java:352) 在 org.apache.commons.dbcp.DelegatingStatement.getGeneratedKeys(DelegatingStatement. java:315) at org.apache.commons.dbcp.DelegatingStatement.getGeneratedKeys(DelegatingStatement.java:315) at org.sql2o.Query.executeUpdate(Query.java:522) ...省略了 67 个通用框架620) at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:540) at java.lang.Thread.run(Thread.java:745) 原因:java.sql.SQLException:操作不在 oracle.jdbc.driver.OracleStatementWrapper.getGeneratedKeys(OracleStatementWrapper.java:352) 在 org.apache.commons.dbcp.DelegatingStatement.getGeneratedKeys(DelegatingStatement. java:315) at org.apache.commons.dbcp.DelegatingStatement.getGeneratedKeys(DelegatingStatement.java:315) at org.sql2o.Query.executeUpdate(Query.java:522) ...省略了 67 个通用框架oracle.jdbc.driver.OracleStatement.getGeneratedKeys(OracleStatement.java:5174) 在 oracle.jdbc.driver.OracleStatementWrapper.getGeneratedKeys(OracleStatementWrapper.java:352) 在 org.apache.commons.dbcp.DelegatingStatement.getGeneratedKeys( DelegatingStatement.java:315) at org.apache.commons.dbcp.DelegatingStatement.getGeneratedKeys(DelegatingStatement.java:315) at org.sql2o.Query.executeUpdate(Query.java:522) ... 省略了 67 个常见框架oracle.jdbc.driver.OracleStatement.getGeneratedKeys(OracleStatement.java:5174) 在 oracle.jdbc.driver.OracleStatementWrapper.getGeneratedKeys(OracleStatementWrapper.java:352) 在 org.apache.commons.dbcp.DelegatingStatement.getGeneratedKeys( DelegatingStatement.java:315) at org.apache.commons.dbcp.DelegatingStatement.getGeneratedKeys(DelegatingStatement.java:315) at org.sql2o.Query.executeUpdate(Query.java:522) ... 省略了 67 个常见框架getGeneratedKeys(DelegatingStatement.java:315) at org.sql2o.Query.executeUpdate(Query.java:522) ... 省略了 67 个常用帧getGeneratedKeys(DelegatingStatement.java:315) at org.sql2o.Query.executeUpdate(Query.java:522) ... 省略了 67 个常用帧

只是为了删除。插入和检索运行良好。

我在谷歌上搜索这个问题,但唯一的结果是围绕封闭的 resulSet 解决,这不是这里的情况。

0 投票
1 回答
1906 浏览

java - 如何使用 sql2o 从 SQL 中获取数据?

我正在尝试使用 sql2o lib 将数据从 mySQL 获取到 java 中的 List。

但由于某种原因,我只是不明白如何正确使用它(看起来像)。

这是错误的代码:

这是我得到的错误:

0 投票
1 回答
260 浏览

mysql - 如何为每个请求设置一个数据库连接的 Tomcat

我有一个已部署在 Tomcat 服务器上的 Sparkjava 应用程序。它使用 SQL2O 与 MySQL 数据库交互。一段时间后,我开始无法连接到数据库。我试过直接从 SQL2O 连接,通过 HikariCP 连接和通过 JNDI 连接。在我开始获得Communications link failure. 这个应用程序每天最多会被点击几次,所以性能完全不是问题。我想将应用程序配置为每个请求使用一个数据库连接。我该怎么做?

该应用程序在我重新部署之前不会再次上线(再次覆盖 ROOT.war)。重新启动 tomcat 或整个服务器什么都不做。

目前,每个请求都会创建一个新Sql2o对象并使用withConnection. 如果我泄露了任何连接,我会感到非常惊讶。

这是一些示例代码(简化)。

0 投票
2 回答
340 浏览

java - SQL 查询性能、归档与状态变化

直截了当,我试过在谷歌和 SO 上搜索,但找不到我要找的东西。这可能是因为我的搜索措辞不正确。

我的问题是,
我有几张桌子,每年可以容纳 1,000 到 100,000 行。我想弄清楚,我/我应该如何处理归档数据?我对数据库的经验并不丰富,但下面是我想出的一些方法,我不确定哪种方法更好。当然要考虑性能和易于编码。我正在使用 Java 1.8、Sql2o 和 Postgres。

方法 1 每年将数据归档到单独的数据库中。
我不太喜欢这种方法,因为当我们想要搜索旧数据时,我们的应用程序将需要搜索不同的数据库,并且为此添加更多代码对我来说很麻烦。

方法 2 将 2-3 年以前的数据归档到单独的数据库中。
并使用在线状态来提高性能。(参见方法 3)这是我倾向于作为“最佳”解决方案的东西,其中代码不那么复杂,但也让 DB 保持相对干净。

方法 3 只需为每一行设置状态(例如:A=active,R=Archived)以可能提高查询的性能。 只需使用“select * from table where status = 'A'”来减少要查看的行数。

0 投票
1 回答
70 浏览

sql2o - 你如何检测 createUpdate() 失败?

我想知道如何测试更新失败。我正在使用的查询是:

而且,在运行之前executeUpdate(),我正在删除the_key == "the_key_value".

有谁知道确定更新是否失败的正确方法?

此外,当我转到javadoc并单击任何内容时,我得到:

未找到 CDN 对象 - 请求 ID:c6a9ba5f-f8ea-46ae-bf7a-efc084971878-19055563

有没有办法在本地构建 javadoc?

编辑:是通过使用来检查这个的方法Connection.getResult()吗?它是否返回更新/插入的记录数等?

0 投票
0 回答
341 浏览

java - RepositoryException:org.sql2o.Sql2oException:数据库错误:查询未返回任何结果

我使用 postgres sql 作为数据库,使用 java 作为后端。我正在使用带有 java 代码的 sql2o,如下所示。

类别类是包含名称、描述、标题等属性的模型。

询问 :

我正在使用返回 * 来取回插入的记录,如上所示。但我收到以下错误

我在某个地方出错了吗?

0 投票
2 回答
328 浏览

java - 如何命名这样的复合类?

0 投票
1 回答
174 浏览

java - sql2o - 选择查询从 VARCHAR 列中删除尾随空格

使用 sql2o ( https://github.com/aaberg/sql2o )

选择具有尾间空间的VARCHAR列(例如"some value ")返回值为"some value"

从 mysql cli 中选择时,结果包含尾随空格

找不到任何文档如何防止这种情况发生

  • 桌子:
  • 代码示例:
0 投票
1 回答
383 浏览

java - 在使用 sql2o 关闭连接之前执行更多查询

我正在使用执行多个查询的函数。我想让它更快,并且在单个之后不要打开连接。

我正在使用 sql2o 库将我的 java 程序与 postgresql 连接起来。ConnectionClass 基于单例模式。

在此代码中,connecton.open() 函数是执行查询时间的调用次数。

0 投票
2 回答
1965 浏览

java - 无法将 JDBC-Hikari 连接到我的 Micronaut 应用程序

运行后出现的错误sudo ./gradlew run

任务:运行失败 12:03:13.440 [main] 错误 com.zaxxer.hikari.HikariConfig - 无法从 HikariConfig 类类加载器 jdk.internal.loader.ClassLoaders$AppClassLoader@3d4eac69 12 加载驱动程序类 com.mysql.jdbc.Driver: 03:13.445 [main] 错误 io.micronaut.runtime.Micronaut - 启动 Micronaut 服务器时出错:无法加载 Bean 定义 [javax.sql.DataSource]:实例化类型 [javax.sql.DataSource] 的 bean 时出错

我的 Application.yml 看起来如何: