type springframework query property org mkyong jparepository invalid found for example ejemplo data crudrepository spring spring-mvc sts-springsourcetoolsuite spring-data spring-data-jpa

springframework - spring data jpa example mkyong



Obtenga el error "Consulta derivada no válida" por todas partes en nuestras interfaces Spring Data JpaRepository en STS 3.1 (4)

Hemos implementado nuestros repositorios exactamente como se muestra en la documentación de Spring Data. Todo estuvo bien hasta que pasamos de STS 2.9 a STS 3.1. Todos los intentos por hacer que estos errores desaparezcan han fallado, y en algunos casos ni siquiera tienen sentido! ¡No coinciden con ninguna propiedad ni en la interfaz ni en las entidades utilizadas!

Aquí hay un ejemplo:

public interface CreditNotesRepository extends JpaRepository<CreditNotes, Long> { CreditNotes findCurrentCreditNotes(Long shipmentDetailId); }

El findCurrentCreditNotes es una consulta con nombre en nuestra entidad. Este código se ejecuta perfectamente bien.

@NamedQueries({ @NamedQuery(name = "CreditNotes.getCount", query = "SELECT COUNT(f) FROM CreditNotes f"), @NamedQuery(name = "CreditNotes.findCurrentCreditNotes", query = "SELECT creditNotes FROM CreditNotes creditNotes" + " WHERE creditNotes.shipmentDetail.shipmentDetailId = ?1 " + " AND creditNotes.notesSeqNumber = (SELECT max(creditNotes2.notesSeqNumber) FROM CreditNotes creditNotes2" + " WHERE creditNotes.shipmentDetail.shipmentDetailId = creditNotes2.shipmentDetail.shipmentDetailId)") })

Y el error que obtenemos:

Invalid derived query! No property find found for type ca.cole.freight.model.CreditNotes

Aunque esto es solo una bandera (no afecta a la compilación), es molesto y confuso. ¿Alguien puede arrojar algo de luz sobre esto? ¡Y explícamelo como si tuviera 6 años! ;)


Acabo de pasar por esto yo mismo. Desafortunadamente, la implementación de Spring Data cambió entre 1.1 y 1.2. Ya no admite la declaración XML <repository> . Puede configurar un postfijo personalizado, pero de forma predeterminada, espera un bean de nombre de clase <InterfaceName>Impl . Si no puede encontrar la implementación del repositorio personalizado, comienza a recibir errores como el que está encontrando. Está intentando crear métodos para consultar objetos basados ​​en nombres de métodos en su interfaz.

Una alternativa es hacer retroceder su versión de Spring Data a 1.1 y especificar una ubicación de esquema de http://www.springframework.org/schema/data/jpa/spring-jpa-1.1.xsd en su XML.


En la post en el Foro de Primavera, el Equipo de Primavera anunció que

Ya está arreglado para STS 3.3.0

No he comprobado esta versión todavía. Pero estoy usando 3.5.0.RELEASE y el problema vuelve! Mi solución es desmarcar la consulta derivada no válida



También hay una solución para esto. Agregue la anotación @Query en su definición de método en su repositorio sin una consulta de JPQL / SQL definida.

Aquí está el ejemplo:

@Query List<OwnerModel> findByFirstNameAndAgeNotZero(@Param(value = "firstName") String firstName);

En este caso, se utilizará la consulta denominada OrderModel.findByFirstNameAndAgeNotZero . Su error de Eclipse La Invalid derived query válida también debería desaparecer sin necesidad de deshabilitar la validación como lo describe @Tuan Dang

Comprobado en Eclipse 4.5.1 con el complemento Spring instalado para @NamedQuery y @NamedNativeQuery .