检查JPA实体是否存在而不加载它

Анд*_*чёв 2 java persistence jpa eclipselink

问题是如下.

我们有一个服务器端点,可以从客户端收到反馈.以多部分/基于表单的格式收到的反馈,包含以下字段:

ProductId - product identifier
Message - feedback message
Log_file - attached log file
Screenshot - attached screenshot file
Run Code Online (Sandbox Code Playgroud)

服务器代码首先检查具有给定id的产品是否存在,如果不存在 - 关闭连接而不接收任何附加文件.

我们使用Eclipselink JPA来存储产品对象.

如何在不从底层数据库加载产品的情况下检查具有给定id的产品是否可行?

Sal*_*kci 5

您可以使用count以查看是否将返回具有id的任何行.

em.createQuery(
    "SELECT COUNT(b.productId) 
    FROM Products b WHERE b.productId=:productId"
);
Run Code Online (Sandbox Code Playgroud)

如果count < 1没有带有该ID的产品.否则,有一个带有该ID的产品.