当前位置: 首页 > 知识库问答 >
问题:

调用repositry上下文不包含key时的Micronaut错误:io.micronaut.tx.STATUS

盖和泰
2023-03-14
import io.micronaut.core.annotation.NonNull;
import io.micronaut.data.annotation.GeneratedValue;
import io.micronaut.data.annotation.Id;
import io.micronaut.data.annotation.MappedEntity;
import io.micronaut.data.model.query.builder.sql.Dialect;
import io.micronaut.data.r2dbc.annotation.R2dbcRepository;
import io.micronaut.data.repository.reactive.ReactiveStreamsCrudRepository;
import io.micronaut.http.annotation.Body;
import io.micronaut.http.annotation.Controller;
import io.micronaut.http.annotation.Get;
import io.micronaut.http.annotation.Post;
import io.micronaut.runtime.Micronaut;
import lombok.RequiredArgsConstructor;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;

public class Application {
    public static void main(String[] args) {
        Micronaut.run(Application.class, args);
    }
}

@Controller
@RequiredArgsConstructor
class CustomerController {

    private final CustomerRepository customerRepository;

    @Get
    public Flux<Customer> getAll() {
        return customerRepository.findAll();
    }

    @Get("/test")
    public Mono<Customer> test() {
        return Mono.from(customerRepository.findById(1L)).map(e -> {
            System.out.println(e);
            return e;
        });
//        System.out.println(customerRepository);
//        return Mono.just("TEST");
    }

    @Post
    public Mono<Customer> create(@Body Customer customer) {
        Customer saveCustomer = new Customer(customer.getName(), customer.getSurname());

        return Mono.from(customerRepository.save(saveCustomer));
    }
}

//@R2dbcRepository(dialect = Dialect.SQL_SERVER)
interface CustomerRepository extends ReactiveStreamsCrudRepository<Customer, Long> {
    //    @NonNull
//    @Override
//    Mono<Customer> findById(@NonNull @NotNull Long id);
//
//    @NonNull
//    @Override
//    Mono<Customer> save(@NonNull @NotNull Customer customer);
//
    @NonNull
    @Override
    Flux<Customer> findAll();
}


@MappedEntity("customer")
class Customer {
    @Id
    @GeneratedValue
    private Long id;


    private final String name;
    private final String surname;

    public Customer(String name, String surname) {
        this.name = name;
        this.surname = surname;
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public String getSurname() {
        return surname;
    }

}

**试图通过终结点调用存储库,但始终出现错误**

Context does not contain key: io.micronaut.tx.STATUS
    at reactor.util.context.Context1.get(Context1.java:67)
    at io.micronaut.data.r2dbc.operations.DefaultR2dbcRepositoryOperations.lambda$withTransaction$27(DefaultR2dbcRepositoryOperations.java:441)
    at reactor.core.publisher.FluxDeferContextual.subscribe(FluxDeferContextual.java:49)
    at reactor.core.publisher.InternalFluxOperator.subscribe(InternalFluxOperator.java:62)
    at reactor.core.publisher.FluxDefer.subscribe(FluxDefer.java:54)
    at reactor.core.publisher.InternalFluxOperator.subscribe(InternalFluxOperator.java:62)

共有2个答案

张亦
2023-03-14

我在micronaut 3上遇到了同样的问题。经过一些测试后,我发现,在我的具体情况下,这个问题是由使用以下模块引起的:

micronaut-security-jwt
micronaut-reactor
micronaut-jackson-xml

如果删除所有这些依赖项,问题就会消失。我认为这个问题是由上述微型机器人模块引起的,所以我在微型机器人-r2dbc github页面上打开了一个问题,希望他们尽快解决这个问题。

编辑:他们修复了这个bug发布了新的micronaut版本3.0.1!!!

杨昊
2023-03-14

我遇到了同样的问题。

检查这个:

@Get
    public Flowable<Customer> getAll() {
        return Flowable.fromPublisher(customerRepository.findAll());
    }

以及哪里是< code > Mono use < code > single . from publisher(your Mono)

 类似资料:
  • 我一直试图在Flutter中获得整个上下文视图的大小。但每次我尝试,我都会得到上面提到的错误。这是我的密码: 注意:我还尝试了一个。请帮我找出我做错了什么。

  • 编辑: 我找到了另一个解决这个问题的方法。如果我们给一个键,它是,我们可以如下所示显示快捷键,而不需要将主体封装在小部件中。但是,返回的小部件应该是一个有状态的小部件。

  • 在这里输入图像描述我正在尝试运行一个ejs文件,并得到错误:无法找到包含文件“partials/head”。 我已经检查了stackoverflow和github的大部分文章,但是无法解决它... 错误:在getIncludePath(C:\users\Junia\Desktop\Node\Node_Desktop\EJS\lib\EJS.js:162:13)中找不到包含文件“partials/h

  • 我试图使用ASP. NET MVC 4和MongoDB创建一个基本的电影数据库。我的问题是在我的电影控制器的POST更新方法。 ModelState包含电影的Id字段(这是一个ObjectId对象)的错误,并抛出以下异常: 这是更新视图: 还有模特的电影课: 编辑:解决方案我将[脚手架列(假)]添加到id中,这样浏览器就不会试图呈现它。然而,我仍然需要实现Mihai提供的解决方案,以便通过正确的I

  • 问题内容: 这是有错误的部分。 致命错误:第6行/pb_events.php中不在对象上下文中时使用$ this 第6行是: 非常感谢!欣赏! 问题答案: $这仅在方法中有意义,在函数中没有意义 还行吧 这不是 //编辑:没有注意到他将“ $ this”作为参数传递 建议:只需将“ $ this”替换为“ $ somethingElse”

  • 在创建spring maven rest WebService时,我得到了以下错误。当我使用postman测试OCBC api上的post请求时,它工作得很好。但是当我试图为citi执行post请求时,我得到了以下错误:servlet.service()for servlet[dispatcherServlet]上下文中的path[]抛出异常[request processing Failed;嵌