programing

Spring Data JPA: 쿼리ManyToMany

javamemo 2023. 9. 17. 12:02
반응형

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_UserNameJPQL로 번역됩니다.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

반응형