0

几天前我开始探索 Quarkus 和 Panache,到目前为止,我的体验非常棒。但是,我不知道如何使用 IntelliJ IDEA 中的“评估查询”选项运行 Panache 查询。

如果我使用 运行我的演示应用程序./mvnw compile quarkus:dev,所有定义的端点都可以正常工作并以预期的响应进行响应。例如,我ArticleResource定义了一个这样的方法:

@Path("/article")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public class ArticleResource {
    @GET
    public List<Article> getAll(@QueryParam @DefaultValue("0") Integer page) {
        return Article.findAll().page(Page.of(page, 2)).list();
    }
}

curl使用or查询时返回的数据没有问题http。但是,如果我将调试器连接到应用程序,在方法中的断点处暂停执行并在getAll表达式上使用“评估表达式”函数Article.findAll().page(Page.of(page, 2)).list(),而不是数据库实体,则会引发异常。

异常类型为java.lang.IllegalStateException,详细消息为This method is normally automatically overridden in subclasses: did you forget to annotate your entity with @Entity?

我认为详细消息是一条红鲱鱼,因为我的Article实体@Entity肯定用注释进行了注释,并且还创建了一个相关的数据库表。我尝试了两种将调试器附加到我的应用程序的方法:

  1. 定义一个自定义public static void main方法并像从 IDEA 中的普通 Java 应用程序一样运行应用程序。
  2. 让 IDEA 执行compile quarkus:devMaven 目标,并定义远程调试器连接。

这两种方法都会导致抛出相同的异常。我尝试评估哪些 Panache 查询似乎也无关紧要,即使是一个简单的Article.listAll()调用也会因相同的异常而失败。

我搜索了有关 Maven 工具、IDE 集成和 Panache 等主题的文档,但没有发现任何关于此问题的提及。在搜索异常详细信息时,大多数搜索结果与运行测试套件时遇到此问题的人有关,与调试器无关。

我尝试使用的 JDK 是 GraalVM EE 20.1.0(基于 OpenJDK 11)。

我希望我的解释是可以理解的,并感谢您对此问题的任何见解!

4

0 回答 0