24

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歳のように説明してください!;)

4

4 に答える 4

33

Spring Forumの投稿で、Spring Team は次のように発表しました。

STS 3.3.0 ではすでに修正されています。

このバージョンはまだチェックしていません。しかし、私は 3.5.0.RELEASE を使用していますが、問題が再発します! 私の修正は、無効な派生クエリのチェックを外すことです

無効な派生クエリ

于 2014-04-16T16:39:07.420 に答える
26

これは、次の投稿で説明されている IDE エラーです。

http://forum.springsource.org/showthread.php?138585-無効な派生クエリ!-No-property-delete-found-for-type-java-lang-Object

それまでの間、設定/春/プロジェクトバリデーター/データバリデーターで検証をオフにすることができます無効な派生クエリの チェックを外すと、STSはマーカーをスローしなくなります。

于 2013-08-28T19:58:55.987 に答える
15

これに対する回避策もあります。@QueryJPQL/SQL クエリを定義せずに、リポジトリのメソッド定義にアノテーションを追加します。

ここに例があります:

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

この場合、名前付きクエリOrderModel.findByFirstNameAndAgeNotZeroが使用されます。Invalid derived query@Tuan Dang で説明されているように、検証を無効にする必要なく、Eclipse エラーも消えるはずです。

@NamedQueryおよび用の Spring プラグインがインストールされた Eclipse 4.5.1 で確認済み@NamedNativeQuery

于 2016-02-01T11:56:19.200 に答える
0

私はちょうどこれを自分で経験してきました。残念ながら、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.xsdXML でスキーマの場所を指定することです。

于 2013-01-03T02:20:39.590 に答える