2017-08-08 11 views
-1

レポジトリの休息中のSpring APIでは、3つのパラメータで値を見つける必要がありますが、それは電話、パスワード、見つからない= 0の検索です。私は既にそれをエンティティに追加しましたが、無効な派生クエリーを表示しています! CustomerEntity型のプロパティが削除されていません! 2つのフィールドが正常に動作しているが、春休みレポジトリのエラー

@Entity 
@Table(name = "CUSTOMER") 
public class CustomerEntity { 

    @Column(name = "IS_DELETED", length = 3, nullable = false) 
    private Boolean isdeleted; 
+0

なぜあなたはプロパティ名にスペースがありますか? 'private Boolean is deleted'で正確に – DevDio

答えて

0

春データJPAはあなたのフィールド名が正しく派生クエリを生成するために、特定の規則に従っていることを前提としてい

@Repository 
public interface CustomerRepository extends JpaRepository<CustomerEntity, Long> { 
CustomerEntity findByfacebookID(String facebookID); 
CustomerEntity findByPhoneAndPasswordAndIsDeleted(String phone, String password, Boolean isdeleted); 

実体に機能していない、削除されます。大文字の問題。 isdeleted != isDeleted。さらに、IsXYZは、Spring Data JPAクエリでspecial meaningとなっており、構文にあいまい性が発生する可能性があります。一般的に、慣習に固執し、物事がはるかに簡単になります。

@Repository 
public interface CustomerRepository extends JpaRepository<CustomerEntity, Long> { 
    CustomerEntity findByfacebookID(String facebookID); 

    CustomerEntity findByPhoneAndPasswordAndDeleted(String phone, String password, Boolean deleted); 
} 

@Entity 
@Table(name = "CUSTOMER") 
public class CustomerEntity { 

    @Column(name = "IS_DELETED", length = 3, nullable = false) 
    private Boolean deleted; 

    // phone, password, other fields... 
} 

要するに:むしろ、フィールド名に比べ、一般的にアクセサのメソッド名に使用されている(あなたのブール変数からisプレフィックスを削除)。

+0

注目に値する:あなたが見ているエラーメッセージに基づいて、' private Boolean isdeleted;の 'd'を大文字にするだけでこの問題は解決されるだろうが、次回の変更のクエリであいまいさを避けます。 – nbrooks

+0

ありがとうnbrooksその作業ははいですそれはdの問題でした.i小さなキャップで使用する必要がありますIsdeleted – bkumar