반응형
Spring Data JPA: 쿼리ManyToMany
개체가 있습니다.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
. 이렇게 하면 지정된 사용자 이름과 정확하게 일치합니다.
@JoinTable을 사용하고 있었는데 이렇게 작동하게 되었습니다.
@Query("select t from Test t join t.users u where u.username = :username")
List<Test> findAllByUsername(@Param("username") String username);
t.users u
대신에User u
다른 답변은 함수 명명 기법을 사용하여 원하는 기능을 달성하는 방법을 보여줍니다.@Query 주석을 사용하여 다음과 같은 동일한 기능을 달성할 수 있습니다.
@Query("select t from Test t join User u where u.username = :username")
List<Test> findAllByUsername(@Param("username")String username);
밑줄 없이 사용 가능합니다.
List<Test> findByUsersUserName(String userName)
언급URL : https://stackoverflow.com/questions/33438483/spring-data-jpa-query-manytomany
반응형
'programing' 카테고리의 다른 글
setRequest에서 설정한 Ajax 헤더를 제거할 수 있는 방법이 있습니까?머리글()? (0) | 2023.09.17 |
---|---|
아약스 이진 응답 (0) | 2023.09.17 |
사용자 지정 파워셸 함수 목록을 가져오는 방법은? (0) | 2023.09.17 |
PHP MySQL(MariaDB) 쿼리 끊기 (0) | 2023.09.12 |
VBA를 사용한 Excel 사용자 양식의 프레임에 컨트롤 추가 (0) | 2023.09.12 |