Me gustaría escribir una consulta similar JpaRepositorypero no devuelve nada:
LIKE '%place%'-no funciona.
LIKE 'place' funciona perfectamente.
Aquí está mi código:
@Repository("registerUserRepository")
public interface RegisterUserRepository extendsJpaRepository<Registration,Long> {
    @Query("Select c from Registration c where c.place like :place")
     List<Registration> findByPlaceContaining(@Param("place")String place);
}
                    
                        java
                                jpa
                                spring-data-jpa
                                
                    
                    
                        sudeep cv
fuente
                
                
            fuente

like '%:place%'con'y no hubo ningún resultado, porque Hibernate agrega's a las cadenas por sí mismo.En realidad, no necesita la
@Queryanotación en absoluto.Puedes usar lo siguiente
fuente
@Query()es imprescindible, ¿verdad? Con ese enfoque, tendría que hacerorque en realidad no sea una solución adecuada para ese caso:findByField1OrField2Containg(String phraseForField1, String phraseForField2)También puede implementar las consultas similares utilizando la palabra clave "Containing" compatible con Spring Data JPA .
fuente
Para su caso, puede utilizar directamente los métodos JPA. Eso es como un bramido:
Contiene: seleccione ... como%: lugar%
aquí, IgnoreCase le ayudará a buscar elementos ignorando el caso.
Usando @Query en JPQL :
A continuación, se muestran algunos métodos relacionados:
Me gusta
findByPlaceLike... donde x.place como? 1
Empezando con
findByPlaceStartingWith... donde x.place like? 1 (parámetro enlazado con% agregado)
Terminando con
findByPlaceEndingWith... donde x.place like? 1 (parámetro enlazado con% antepuesto)
Conteniendo
findByPlaceContaining... donde x.place como? 1 (límite de parámetro envuelto en%)
Más información, vea este enlace , este enlace y este
Espero que esto te ayudará :)
fuente
Puede tener una alternativa de usar marcadores de posición como:
fuente
Prueba esto.
fuente
something=:placeyanother like %:place%en consulta.cuando llamo a la función, uso:
findByPlaceContaining("%" + place);o:
findByPlaceContaining(place + "%");o:
findByPlaceContaining("%" + place + "%");fuente
la respuesta exactamente será
-> `@Query (" seleccione u de la Categoría u donde u.categoryName como%: input% ") List findAllByInput (@Param ("input") String input);fuente
Encontré una solución sin
@Query(en realidad probé cuál es "aceptado". Sin embargo, no funcionó).Tienes que regresar en
Page<Entity>lugar deList<Entity>:IgnoreCaseparte fue fundamental para lograr esto!fuente