2016-05-12 26 views
3

我有兩個實體,一個用戶和一個註冊用戶。Spring數據存儲庫的字段查找方法

註冊用戶有一個類型爲user的字段。我想在與這個註冊用戶實體相關的spring數據倉庫中有一個方法,通過連接到註冊用戶的用戶的用戶名搜索所有註冊用戶。

所以,這是帶有相關的用戶現場註冊用戶實體:

@Entity 
public class RegisteredUser implements Serializable { 

    ... 
    @OneToOne 
    @JoinColumn(name = "USERNAME_FK") 
    private User user; 
    ... 
} 

,這是一個用戶名的用戶:

@Entity 
public class User implements Serializable { 
    ... 
    @Id 
    @Column(nullable = false) 
    protected String username; 
    ... 
} 
+0

U的使用這2個實體之間的映射onetoone ..這意味着ü不能找到很多用戶對同一registereduser ..我想你應該使用onetomany註釋 – FuSsA

回答

4

春數據(至少1.12.x版本)使用PropertyPath#from方法爲從方法名稱構造的謂詞提取屬性的路徑。根據sources它使用下劃線作爲「字段分隔符」。因此,第一個變體如下

public interface RegisteredUserRepository extends CrudRepository<RegisteredUser,String> { 
    List<RegisteredUser> findRegisteredUserByUser_Username(String username); 
} 

還有一些代碼將大寫字符視爲字段分隔符,如果找不到整個字段名稱。所以,如果你沒有在RegisteredUser第二瓦里安一個userUsername

public interface RegisteredUserRepository extends CrudRepository<RegisteredUser,String> { 
    List<RegisteredUser> findRegisteredUserByUserUsername(String username); 
} 
+0

第二個選項工作(沒有嘗試第一個),謝謝。順便說一句,我只想找到一個註冊用戶(因爲它是一對一的關係),所以最後的方法簽名是:'findOneRegisteredUserByUserUsername(String username)'。 – nbro

相關問題