Найти отдельные строки со списком объектов, используя JPA и Spring - PullRequest
0 голосов
/ 30 августа 2018

У меня есть отношение многие ко многим между тегами и сообщениями. Мне нужно написать запрос jpa, чтобы найти все сообщения по списку тегов. Я могу сделать это как: findDistinctByTagsIn (список тегов), и это работает, но мне нужен пользовательский запрос. Я пытался

@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<>();

Кто-то имеет представление, что не так? Я пытался с join, но все еще не могу понять, как это сделать

Ответы [ 2 ]

0 голосов
/ 31 августа 2018

Вы можете использовать @Query с JPQL или @Query с SQL

@ Запрос с использованием подхода 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);
}
0 голосов
/ 31 августа 2018

Если вы хотите написать пользовательские запросы, вы можете использовать спецификации JPA. Вот ссылка для получения дополнительной информации: -

https://www.baeldung.com/rest-api-search-language-spring-data-specifications

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...