O Spring Data JPA suporta contar entidades usando especificações. Mas ele tem alguma maneira de contar entidades usando a resolução de nomes de métodos? Digamos que eu queira um método countByName
para contar entidades com nome específico, assim como um método findByName
para buscar todas as entidades com nome específico.
java
spring
spring-data-jpa
YaoFeng
fonte
fonte
Respostas:
No Spring Data 1.7.1.RELEASE, você pode fazer isso de duas maneiras diferentes,
1) A nova maneira , usando a derivação de consulta para consultas de contagem e exclusão. Leia isto (Exemplo 5). Exemplo,
2) Da maneira antiga , usando a anotação @Query.
Exemplo,
ou usando a anotação @Param também,
Verifique também esta resposta .
fonte
Contanto que você não use a versão 1.4, use a anotação explícita:
exemplo:
fonte
long
em vez deint
, caso contrário, você receberá uma ClassCastException sem quaisquer pistasJpaRepository também estende QueryByExampleExecutor. Portanto, você nem precisa definir métodos personalizados na sua interface:
E então consulta como:
fonte
int age
, será incluído, embora não definido, masInteger age
será excluído da amostra (pelo menos no Eclipselink)Este recurso foi adicionado na versão 1.4 M1
fonte
Exemplo de trabalho
Chamando da camada DAO
fonte
Segundo Abel, após a versão 1.4 (testada na versão 1.4.3.RELEASE) é possível fazer o seguinte:
public long countByName (nome da string);
fonte
Aparentemente, está implementado agora DATAJPA-231
fonte
Obrigado a todos! Agora é trabalho. DATAJPA-231
Seria bom se fosse possível criar count… Por… métodos como encontrar… By ones. Exemplo:
fonte
De acordo com o problema DATAJPA-231, o recurso ainda não foi implementado.
fonte
Eu trabalho com ele há apenas algumas semanas, mas não acredito que isso seja estritamente possível, mas você poderá obter o mesmo efeito com um pouco mais de esforço; basta escrever a consulta e anotar o nome do método. Provavelmente não é muito mais simples do que escrever o método, mas é mais limpo na minha opinião.
Edit: agora é possível de acordo com DATAJPA-231
fonte
fonte
Se alguém quiser obter a contagem com base em várias condições, aqui está uma consulta personalizada de amostra
fonte