几天前,我开始探索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
或http
查询时返回的数据没有问题。但是,如果我将调试器连接到应用程序,则在getAll
方法中的断点处暂停执行,并对Article.findAll().page(Page.of(page, 2)).list()
表达式(而不是数据库实体)使用“ Evaluate Expression”函数,则将引发异常
异常类型为java.lang.IllegalStateException
,详细信息为This method is normally automatically overridden in subclasses: did you forget to annotate your entity with @Entity?
。
我认为详细消息是一个红色的鲱鱼,因为我的Article
实体肯定带有@Entity
注释,并且还创建了相关的数据库表。我尝试了两种将调试器附加到应用程序的方法:
public static void main
方法,然后像从IDEA像普通Java应用程序一样运行该应用程序。compile quarkus:dev
Maven目标,并定义一个远程调试器连接。这两种方法都会导致抛出相同的异常。我尝试评估哪个Panache查询也似乎无关紧要,即使是一个简单的Article.listAll()
调用也会因相同的异常而失败。
我搜索了有关Maven工具,IDE集成和Panache等主题的文档,但未发现任何有关此问题的信息。当搜索异常详细信息时,大多数搜索结果与运行测试套件时遇到此问题的人有关,而与调试器无关。
我尝试使用的JDK是GraalVM EE 20.1.0(基于OpenJDK 11)。
我希望我的解释是可以理解的,并感谢您对这个问题有任何见识!