Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用vertx jooq classic Responsive:5.0.1编写期货时,获取错误连接未打开或关闭_Java_Postgresql_Vert.x_Jooq - Fatal编程技术网

Java 使用vertx jooq classic Responsive:5.0.1编写期货时,获取错误连接未打开或关闭

Java 使用vertx jooq classic Responsive:5.0.1编写期货时,获取错误连接未打开或关闭,java,postgresql,vert.x,jooq,Java,Postgresql,Vert.x,Jooq,我有一个问题,当为了执行更新图书表和插入/删除中间表中的某些行(类别)图书和(作者)图书(图书)时,因为图书与作者和类别之间存在多对多关系。我在控制台中得到的错误消息是: 错误com.ns.vertx.pg.bookjooqquerys-错误,deleteCategoryBookFuture.compose(..)中出现故障!原因:io.vertx.core.VertxException:连接未打开或关闭 此外,我还在ReactiveClassicGenericQueryExecutor类的实例

我有一个问题,当为了执行更新图书表和插入/删除中间表中的某些行(类别)图书和(作者)图书(图书)时,因为图书与作者和类别之间存在多对多关系。我在控制台中得到的错误消息是:

错误com.ns.vertx.pg.bookjooqquerys-错误,deleteCategoryBookFuture.compose(..)中出现故障!原因:io.vertx.core.VertxException:连接未打开或关闭

此外,我还在ReactiveClassicGenericQueryExecutor类的实例上混合使用DAO实例和execute()方法。这是我的类,我在这里得到这个错误,这是我的RESTful web服务的路由、DAO和其他配置发生的地方

我不知道我是否有可能“过度合成”了未来的实例,这就是导致此错误的原因,但据我所知,合成是在某些操作(插入/删除/更新)需要按顺序执行且所有操作都必须成功时使用的

我正在使用的库:
Vert.x版本:3.8.2
vertx jooq经典无功功率:5.0.1
postgresql:42.2.2(Postgres DB在我的机器上是11.7版)

注意:我在我的book_CRUD分支中做了这些更改,这与master没有什么区别(因为我不想合并这些功能不全的更改)。

我(更诚实地说)设法找到了解决方案,解决了这个问题。问题是(据我所知)不是要组成未来的实例,而是要组成右边的值(即方法调用)。例如,我的代码是这样编写的:

 Set<Long> deleteCategoryIdsSet = HashSet();
    Future<Integer> insertBCFuture = categoryBookDAO.insert(bookCategories);
    Future<Integer> deleteCategoryBookFuture = queryExecutor.execute(dsl -> dsl
                        .deleteFrom(CATEGORY_BOOK)
                        .where(CATEGORY_BOOK.BOOK_ID.eq(Long.valueOf(bookId)))
                        .and(CATEGORY_BOOK.CATEGORY_ID.in(deleteCategoryIdsSet)))
    Future<Integer> retVal = insertBCFuture.compose(res -> deleteCategoryBookFuture)
                   .setHandler(finalResRetVal -> {
                        // handle 'finalResRetVal'
..});
通过这种(解决的)方式,未来的代码和错误不会显示,删除和插入操作也会成功执行。

我(更诚实地说)设法找到了解决问题的方法。问题是(据我所知)不是要组成未来的实例,而是要组成右边的值(即方法调用)。例如,我的代码是这样编写的:

 Set<Long> deleteCategoryIdsSet = HashSet();
    Future<Integer> insertBCFuture = categoryBookDAO.insert(bookCategories);
    Future<Integer> deleteCategoryBookFuture = queryExecutor.execute(dsl -> dsl
                        .deleteFrom(CATEGORY_BOOK)
                        .where(CATEGORY_BOOK.BOOK_ID.eq(Long.valueOf(bookId)))
                        .and(CATEGORY_BOOK.CATEGORY_ID.in(deleteCategoryIdsSet)))
    Future<Integer> retVal = insertBCFuture.compose(res -> deleteCategoryBookFuture)
                   .setHandler(finalResRetVal -> {
                        // handle 'finalResRetVal'
..});
以这种(解决的)方式,未来的代码和错误不会显示,删除和插入都会成功执行