エンティティUser
およびTest
があります
@Entity
public class User {
private Long id;
private String userName;
}
@Entity
public class Test {
private Long id;
@ManyToMany
private Set<User> users;
}
ユーザーエンティティごとにすべてのテストを取得できます。
public interface TestRepository extends JpaRepository<EventSettings, Long> {
List<Test> findAllByUsers(User user);
}
しかし、userName
によるすべてのテストを見つけるためにどのクエリを使用できますか?
次のメソッドシグネチャを使用すると、必要になります。
List<Test> findByUsers_UserName(String userName)
これは、Spring Data JPAの プロパティ式 機能を使用しています。サイン Users_UserName
はJPQLに変換されますx.users.userName
。これにより、指定されたユーザー名と完全に一致することに注意してください。
他の答えは、関数の命名手法を使用して目的の機能を実現する方法を示しています。次のように@Queryアノテーションを使用して同じ機能を実現できます。
@Query("select t from Test t join User u where u.username = :username")
List<Test> findAllByUsername(@Param("username")String username);