2017-08-08 78 views
-1

在Repositories中的Rest Spring API中,我需要通過三個參數來查找值,但這是phone,password,找到delete = 0。我已經將它添加到實體,但它顯示錯誤無效的派生查詢!找不到類型爲CustomerEntity的屬性!兩個現場工作正常,但刪除的工作不Spring Rest Repository Error

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

實體

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

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

爲什麼你在屬性名稱中有一個空格?完全在'私人布爾被刪除' – DevDio

回答

0

春數據JPA假定您的字段名稱遵循一定的約定,以便正確地生成導出查詢。資本化問題; 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布爾值中刪除'd'被刪除;'也可能解決這個問題,但是值得做完整的更新避免在您的查詢中發現下一個更改時出現歧義。 – nbrooks

+0

感謝nbrooks它的工作是的這是d .i的問題必須使用它在小型大寫字母Isdeleted – bkumar