2

多くのタスクを持つプロジェクトがあります。

TASKS テーブルをクエリして、userId のすべての projectIds を返す SQL クエリがあります。

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

まず、プロジェクト ID のリストを指定して、すべての Project オブジェクトを取得する簡単な JPA の方法があるのではないかと思います。

次に、この SQL の機能を実行する JPA クエリを作成するにはどうすればよいですか? 私はそれが次のようなものでなければならないと推測しています:

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

しかし、私にはわかりません。どんな提案でも大歓迎です!

ロブ

4

1 に答える 1

5

プロジェクトIDのリストを指定して、すべてのプロジェクトオブジェクトを取得する簡単なJPAの方法があるのだろうか。

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に関するドキュメントを読んでください。これは、JPQLの小さなスーパーセットであるHQLに関するHibernateのドキュメントです。

于 2012-05-15T15:32:53.873 に答える