モデル:Spring Data JPAを使用して異なるエンティティフィールドを取得するには?
class User {String firstName, String lastName};
class Job {String name, List<User> users, List<User> checkers};
免責事項。 ジョブには名前、このジョブで作業するユーザー、作業結果をチェックするチェッカーユーザーがいます。
はここで春データリポジトリです:
SELECT DISTINCT checker FROM job WHERE job.user in (?1) -- ?1 - here are users provided
これを実行する方法:
interface JobDao extends PagingAndSortingRepository<Job>{
List<Job> findByUsers(Collection<User> users); //this return list of Jobs.
List<User> findCheckersByUsers(Collection<User> users); //I'd like to get list of users that check work for provided users. But it doesn't work this way.
}
ここで私が取得したい普通のSQLですか?
P. S.
- 私は約Projectionsを読んで、それは私がしたいことと同じではありませんに見えてきました。私は既に必要なものを持っているので、私は追加のインターフェイスを作成したくありません。
- 確かに、私はfindByUsersメソッドを使用して、JavaストリームAPI
jobs.stream().map(Job::getChecker).collect(toSet());
を使用することができますが、それはかなり見えません。
'findDistinctCheckersByUsers'はジョブを実行しませんか? [ここから](http://docs.spring.io/spring-data/jpa/docs/current/reference/html/#repositories.query-methods.query-creation)。 – Tunaki
@Tunaki、いいえ、このメソッドは 'User'エンティティではなく' Job'のコレクションを返します。 – omickron