我在标签和帖子之间有很多关系。我需要编写jpa查询以按标签列表查找所有帖子。我可以这样做:findDistinctByTagsIn(List标签),它可以工作,但是我需要自定义查询。我尝试过
@Query("SELECT DISTINCT p FROM Post p WHERE p.tags IN :tags")
但是它给我一个错误:
select distinct post0_.id as id1_0_, post0_.content as content2_0_, post0_.name as name3_0_, post0_.user_id as user_id4_0_ from posts post0_ cross join posts_tags tags1_, tags tag2_ where post0_.id=tags1_.posts_id and tags1_.tags_id=tag2_.id and (. in (? , ?))
帖子实体中的字段:
@ManyToMany(cascade = {CascadeType.MERGE, CascadeType.PERSIST})
private List<Tag> tags = new ArrayList<>();
标签实体中的字段:
@ManyToMany(cascade = {CascadeType.PERSIST, CascadeType.MERGE}, mappedBy = "tags")
private List<Post> posts = new ArrayList<>();
有人知道什么地方错了吗?我尝试了加入,但仍然不知道该怎么做
答案 0 :(得分:0)
您可以在JPQL上使用@Query或在SQL上使用@Query
@ 使用JPQL方法查询
公共接口ModelJpaRepoaitory扩展了JpaRepository {
@Query(“select m from model m where modelname= :name)
List<Model> findModelsByName(@Param(“name”) String name);
}
@***Query with SQL approach***
public interface ModelJpaRepoaitory extends JpaRepository<Model , Long> {
@Query(“select m from model m where modelname= :name , nativeQuery=true)
List<Model> findModelsByName(@Param(“name”) String name);
}
答案 1 :(得分:-1)
如果要编写自定义查询,则可以使用JPA规范。这是更多信息的链接:-
https://www.baeldung.com/rest-api-search-language-spring-data-specifications