Ответ 1
Это ошибка IDE, описанная в следующем сообщении:
Тем временем вы можете отключить проверку в настройках / spring/validators валидатора/Data validator снимите флажок недопустимый производный запрос, а STS больше не будет помечать маркер.
Мы внедрили наши репозитории в точности, как показано в документации по документам Spring. Все было нормально, пока мы не перешли с 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 лет!;)
Это ошибка IDE, описанная в следующем сообщении:
Тем временем вы можете отключить проверку в настройках / spring/validators валидатора/Data validator снимите флажок недопустимый производный запрос, а STS больше не будет помечать маркер.
В post на форуме Spring команда Spring объявила, что
Он уже исправлен для STS 3.3.0
Я еще не проверял эту версию. Но я использую 3.5.0.RELEASE, и проблема возвращается! Мое исправление заключается в том, чтобы снять флажок Недопустимый производный запрос
Существует также обходное решение для этого. Добавьте @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
.
Я только что пережил это сам. К сожалению, реализация данных Spring изменилась между 1.1 и 1.2. Он больше не поддерживает декларацию XML <repository>
. Вы можете настроить собственный постфикс, но по умолчанию он ожидает bean имени класса <InterfaceName>Impl
. Если он не может найти реализацию пользовательского репозитория, вы начинаете получать ошибки, подобные тому, с которым вы сталкиваетесь. Он пытается создать методы для запроса объектов на основе имен методов в вашем интерфейсе.
Альтернативой является поддержка вашей версии Spring Data до 1.1 и указание схемы http://www.springframework.org/schema/data/jpa/spring-jpa-1.1.xsd
в вашем XML.