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 users; }
我可以通过用户实体获得所有测试:
public interface TestRepository extends JpaRepository { List findAllByUsers(User user); }
但是我可以使用哪个查询来查找userName
所有测试?
您可能希望获得以下方法签名:
List findByUsers_UserName(String userName)
这是使用Spring Data JPA的属性表达式function。 签名Users_UserName
将转换为JPQL x.users.userName
。 请注意,这将在给定的用户名上执行完全匹配。
其他答案显示了如何使用函数命名技术实现所需的function。 我们可以使用@Query注释实现相同的function,如下所示:
@Query("select t from Test t join User u where u.username = :username") List findAllByUsername(@Param("username")String username);