I have entities User and Test
@Entity
public class User {
private Long id;
private String userName;
}
@Entity
public class Test {
private Long id;
@ManyToMany
private Set<User> users;
}
I can get all tests by User entity:
public interface TestRepository extends JpaRepository<EventSettings, Long> {
List<Test> findAllByUsers(User user);
}
But which query can I use for finding all tests by userName?
The following method signature will get you want to want:
List<Test> findByUsers_UserName(String userName)
This is using the property expression feature of Spring Data JPA. The signature Users_UserName will be translated to the JPQL x.users.userName. Note that this will perform an exact match on the given username.
Other answer shows how to achieve desired functionality using function naming technique. We can achieve same functionality using @Query annotation as follows:
@Query("select t from Test t join User u where u.username = :username")
List<Test> findAllByUsername(@Param("username")String username);
I was using @JoinTable and I got it working with this :
@Query("select t from Test t join t.users u where u.username = :username")
List<Test> findAllByUsername(@Param("username") String username);
t.users u instead of User u
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With