2017-10-11 85 views
1

我不確定是否使用此任務觸發了方法查詢的邊界。 我有兩個表,一個User表和一個Password表。 A User可能有多個Password(其中最新的是當前的)。使用多個表進行方法查詢,包括排序?

我想在我的User存儲庫中進行方法查詢,以獲取用戶名的「當前」Password

在SQL它會是這個樣子

"Select FIRST(*) from Passwords INNERJOIN Users ON Users.id=Passwords.userId WHERE Users.username=%s ORDER BY Passwords.created DESC" 

我曾嘗試爲方法查詢findFirstPasswordOrderByPasswords_CreatedByUsers_Username(String username)

這給了我一個例外:

No property byUsers found for type long! Traversed path: UsersEntity.passwords.created.

我不不知道爲什麼它仍然指向created字段。 這對於方法查詢來說太多了嗎?或者我這樣做只是錯誤的?

回答

1

您應該在密碼存儲庫中定義此方法,因爲您正在搜索密碼。在該存儲庫這個方法是這樣的:

Passwords findFirstByUser_UsernameOrderByCreatedDesc(String username); 

要實現此方法,您的密碼實體類應該有參考用戶表上的用戶屬性(從查詢)

+0

這是否意味着,我是僅限於從我的UserRepository中獲取'UserEntities'? –

+1

是的,存儲庫中的查詢方法僅限於存儲庫連接到的實體。但是,您可以使用包含您想要的查詢的自定義@Query註釋的方法。 –

相關問題