17

'daki Spring Data JpaRepository arabirimlerimizdeki tüm yerdeki "Geçersiz türetilmiş sorgulama" hatasını alın. Veri havuzlarımızı Spring Veri belgelerinde gösterildiği gibi uyguladık. STS 2.9'dan STS 3.1'e yükselene kadar her şey yolundaydı. Bu hataları ortadan kaldırmak için yapılan bütün girişimler başarısız oldu ve bazı durumlarda bile mantıklı değiller! Arabirimlerdeki veya kullanılan varlıklardaki herhangi bir özellik ile eşleşmiyorlar!STS 3.1

public interface CreditNotesRepository extends JpaRepository<CreditNotes, Long> { 

    CreditNotes findCurrentCreditNotes(Long shipmentDetailId); 
} 

findCurrentCreditNotes bizim varlıktaki adlandırılmış sorgu: İşte

bir örnektir. Bu kod gayet iyi çalışıyor.

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

Ve hata elde ederiz: Bu rağmen

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

sadece bir bayrak (derleme etkilemez), bu can sıkıcı ve kafa karıştırıcı. Bu konuda biraz ışık tutabilir mi? Ve bana 6 yaşında olduğumu açıkla! ;)

cevap

0

Sadece kendimden geçiyorum. Ne yazık ki, Bahar Verilerinin uygulanması 1.1 ile 1.2 arasında değişti. Artık <repository> XML bildirimini desteklemiyor. Özel bir postfix kurabilir, ancak varsayılan olarak, <InterfaceName>Impl sınıf adı için bir çekirdek bekler. Özel depo uygulamasını bulamazsa, karşılaştığınız gibi hatalar almaya başlarsınız. Arayüzünüzdeki yöntemlerin adlarına dayalı olarak nesneleri sorgulamak için yöntemler oluşturmaya çalışıyor.

Bir alternatif, Spring Data sürümünüzü 1.1 değerine geri yüklemek ve XML'inizde http://www.springframework.org/schema/data/jpa/spring-jpa-1.1.xsd şemayı belirtmektir.

23

İlkbahar Forum post anda, Bahar Takımı Zaten STS 3.3.0

Henüz bu sürümünü kontrol etmedi için sabittir

açıkladı. Ama 3.5.0.RELEASE kullanıyorum ve sorun geri geliyor! Benim düzeltme Geçersiz Türetilmiş sorgula

Invalid Derived Query

+2

Aynı zamanda STS 3.6.3.RELEASE –

+2

'da da meydana gelir. Ve hala 3.7 – Kai

+0

'da. Ve hala 3.8 – Jagger

6

da bunun için vardır geçici çözüm olduğunu işaretini etmektir. JPQL/SQL sorgusu tanımlanmayan veri havuzunuzdaki yöntem tanımınıza @Query ek açıklaması ekleyin. Sorgu OrderModel.findByFirstNameAndAgeNotZero kullanılacaktır adında Bu durumda

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

: Burada

örnektir.@NamedQuery ve @NamedNativeQuery yüklü Bahar eklenti ile Eclipse 4.5.1 Kontrol tarihi @Tuan Dang

tarafından açıklanan şekilde Eclipse hata Invalid derived query da devre dışı bırakılması doğrulama gerek kalmadan kaybolur.