几天前我开始探索 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
肯定用注释进行了注释,并且还创建了一个相关的数据库表。我尝试了两种将调试器附加到我的应用程序的方法:
- 定义一个自定义
public static void main
方法并像从 IDEA 中的普通 Java 应用程序一样运行应用程序。 - 让 IDEA 执行
compile quarkus:dev
Maven 目标,并定义远程调试器连接。
这两种方法都会导致抛出相同的异常。我尝试评估哪些 Panache 查询似乎也无关紧要,即使是一个简单的Article.listAll()
调用也会因相同的异常而失败。
我搜索了有关 Maven 工具、IDE 集成和 Panache 等主题的文档,但没有发现任何关于此问题的提及。在搜索异常详细信息时,大多数搜索结果与运行测试套件时遇到此问题的人有关,与调试器无关。
我尝试使用的 JDK 是 GraalVM EE 20.1.0(基于 OpenJDK 11)。
我希望我的解释是可以理解的,并感谢您对此问题的任何见解!