Весенняя находкаВсе по родительской собственности - PullRequest
0 голосов
/ 19 марта 2019

Я использую JHipster для создания приложения.У меня есть эта карта: Arquivo имеет отношения OneToMany с Табелой.И Табела имеет отношения OneToMany с Кампо.

У Арквиво есть свойство, называемое «версао» (строка).Я хочу сделать что-то вроде:

Page<Campo> findAllByArquivoVersao(String versao, Pageable pageable);

Но я получаю эту ошибку:

Не удалось создать запрос для метода public abstract org.springframework.data.domain.Pagebr.com.app.repository.CampoRepository.findAllByArquivoVersao (java.lang.String, org.springframework.data.domain.Pageable)!Не найдено свойство arquivoVersao для типа Campo!

Я могу сделать что-то вроде findAllByTabelaId ... так что мое сопоставление в порядке.Как я могу выполнить фильтрацию запросов по свойству родителя моего родителя?

Ответы [ 2 ]

1 голос
/ 20 марта 2019

Вариант 1

Найдите свой Arquivo от Versao из ArquivoRepository, а затем позвоните arquivo.getTabelas() и getCampos() для каждого из них, чтобы получить коллекцию нужных вам кампо.

Вариант 2

Определите свой собственный @Query в CampoRepository, например:

@Query("select c from Campo c where c.tabela.arquivo.versao = :versao")
Page<Campo> findAllByArquivoVersao(@Param("versao") String versao, Pageable pageable);

Если вы хотите Campos отЧастичное сравнение их versao вы можете сделать примерно так:

@Query("select c from Campo c where upper(c.tabela.arquivo.versao) like concat('%',upper(:versao),'%')")
Page<Campo> findAllByArquivoVersao(@Param("versao") String versao, Pageable pageable);

Не зная точно, как вы спроектировали свои сущности (извлечение, обнуляемость, ...), это столько, сколько я могу догадаться.

Я не тестировал этот код.

0 голосов
/ 20 марта 2019

Я понял. Spring docs по пункту 4.4.3 определил этот случай:

Я должен назвать свой метод интерфейса следующим образом: findByTabelaArquivoVersao

...