2017-10-11 6 views
1

このタスクでメソッドクエリの境界に達したかどうかはわかりません。 私はUserテーブルとPasswordテーブルの2つのテーブルを持っています。 Userは、複数のPassword(最新のものが現在のもの)を持つ場合があります。注文を含む複数のテーブルを持つメソッドクエリ?

私のUserリポジトリにメソッドクエリを作成して、ユーザー名の "現在の" Passwordを取得したいとします。

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

私はドン」:

SQLでは、メソッドのクエリは私に例外を与えるfindFirstPasswordOrderByPasswords_CreatedByUsers_Username(String username)

であるように私が試してみました何この

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

のようになります。なぜそれがまだcreatedフィールドを指しているのか分かりません。 これはメソッドのクエリには多すぎますか?または私はそれを単に間違っているのですか?

答えて

1

パスワードを検索しているときに、このメソッドをパスワードリポジトリに定義する必要があります。そのリポジトリでは、この方法は、次のようになります。このメソッドを実装するには

Passwords findFirstByUser_UsernameOrderByCreatedDesc(String username); 

、あなたのパスワードのエンティティクラスは

+0

(クエリから)Userプロパティのユーザーテーブルへの参照を持っている必要があり、私はだと、この平均値をい私の 'UserRepository'から' UserEntities'だけを取得するように制限されていますか? –

+1

はい、リポジトリのクエリメソッドは、リポジトリが接続されているエンティティに限定されています。ただし、必要なクエリを含むカスタム@Queryアノテーションを使用してメソッドを使用できます。 –

関連する問題