Получите неверную производную ошибку запроса повсюду в наших интерфейсах Spring Data JpaRepository в STS 3.1

Мы реализовали наши репозитории точно так, как показано в документации Spring Data. Все было хорошо, пока мы не обновились с STS 2.9 до STS 3.1. Все попытки избавиться от этих ошибок не увенчались успехом, а в некоторых случаях даже не имеют смысла! Они не соответствуют никаким свойствам ни в интерфейсе, ни в используемых сущностях!

Вот пример:

public interface CreditNotesRepository extends JpaRepository<CreditNotes, Long> {

    CreditNotes findCurrentCreditNotes(Long shipmentDetailId);
}

findCurrentCreditNotes — это именованный запрос в нашей сущности. Этот код работает отлично.

@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)")
})

И получаем ошибку:

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

Хотя это просто флаг (не влияет на компиляцию), он раздражает и сбивает с толку. Может кто-нибудь пролить некоторый свет на это? И объясните мне это, как будто мне 6 лет! ;)


person skel625    schedule 25.10.2012    source источник


Ответы (4)


Это ошибка IDE, описанная в следующем посте:

http://forum.springsource.org/showthread.php?138585-Invalid-derived-query!-No-property-delete-found-for-type-java-lang-Object

Тем временем вы можете отключить проверку в настройках/spring/project validators/Data validator снять флажок недействительный производный запрос, и STS больше не будет выдавать маркер.

person Grubhart    schedule 28.08.2013

На post на форуме Spring, команда Spring сообщила, что

Это уже исправлено для STS 3.3.0

Эту версию я еще не проверял. Но я использую 3.5.0.RELEASE и проблема возвращается! Мое исправление состоит в том, чтобы снять флажок Invalid Derived Query.

Неверный производный запрос

person Tuan    schedule 16.04.2014
comment
Также встречается в STS 3.6.3.RELEASE. - person Gernot; 18.12.2014
comment
Проблема по-прежнему присутствует и в STS 3.9.1. - person kri; 21.12.2017
comment
Проблема все еще в 3.9.4 - person Ouissal Benameur; 29.05.2018
comment
Это все еще в 3.9.5 - person Anand; 08.08.2018
comment
это все еще в 3.9.8 - person David Vicente; 03.06.2019

Для этого также есть обходной путь. Добавьте аннотацию @Query к определению вашего метода в вашем репозитории без определенного запроса JPQL/SQL.

Вот пример:

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

В этом случае будет использован именованный запрос OrderModel.findByFirstNameAndAgeNotZero. Ваша ошибка Eclipse Invalid derived query также должна исчезнуть без необходимости отключения проверки, как описано @Tuan Dang.

Проверено на Eclipse 4.5.1 с установленным плагином Spring для @NamedQuery и @NamedNativeQuery.

person Paweł Dulęba    schedule 01.02.2016
comment
Павел Делеба, java.lang.IllegalArgumentException: исходная строка запроса не может быть нулевой или пустой . ваше решение не сработает - person Arun nagar; 09.10.2020

Я сам только что прошел через это. К сожалению, реализация Spring Data изменилась между 1.1 и 1.2. Он больше не поддерживает объявление <repository> XML. Вы можете настроить собственный постфикс, но по умолчанию он ожидает bean-компонент с именем класса <InterfaceName>Impl. Если он не может найти реализацию пользовательского репозитория, вы начинаете получать ошибки, подобные той, с которой вы столкнулись. Он пытается создать методы для запроса объектов на основе имен методов в вашем интерфейсе.

Альтернативой является резервная копия вашей версии Spring Data до 1.1 и указание схемы http://www.springframework.org/schema/data/jpa/spring-jpa-1.1.xsd в вашем XML.

person Apropos    schedule 03.01.2013