如何获取所有JPA对象的ID列表,或如何从这个SQL查询中获取JPA查询?

时间:2012-05-15 15:22:47

标签: sql jpa

我有一个有很多任务的项目。

我有一个SQL查询,通过查询TASKS表返回userId的所有projectId ......这里是:

SELECT DISTINCT(projectId) 
FROM TASKS
WHERE userId = '55' AND status = 'IN_PROGRESS';

首先,我想知道是否有一个简单的JPA方法来获取项目ID列表中的所有Project对象?

其次,如何创建一个执行此SQL操作的JPA查询?我猜它必须是这样的:

SELECT DISTINCT(Project p)
WHERE /*one of the tasks*/ p.tasks[].userId = '55' AND p.tasks[].status = 'IN_PROGRESS';

但我不知道。任何建议都非常感谢!

罗布

1 个答案:

答案 0 :(得分:5)

我想知道是否有一个简单的JPA方法来获取项目ID列表中的所有Project对象

select p from Project p where p.id in :projectIds

如何创建一个执行此SQL操作的JPA查询?

select distinct project.id 
from Task task
inner join task.project project
where task.userId = :userId and task.status = :status;

阅读有关JPQL的文档,因为这是非常基本的东西。这是Hibernate documentation on HQL,它是JPQL的一个小超集。