はJPA

2017-06-16 4 views
0

にIDを使用せずに取得し、私はテーブルを持っている:はJPA

IDが一意の識別子である
User: id, name, age, role_key 

。 特定のrole_keyを持つすべてのユーザーを取得したいとします。

は、私はこのような何かができる:

entityManager.createQuery(
    "SELECT u From user WHERE user.role_key LIKE :roleKey") 
    .setParameter("roleKey", roleKey) 
    .getResultList(); 

しかし、私はクエリを記述するためのより良い方法があるかどうかを知りたいと思いました。 たとえば、IDを使用して取得する場合は、findを使用できます。しかし、私は一意ではないrole_keyを使用しているので、ここで完全な選択クエリを書く必要はありません。

おかげJonKさんのコメントに加えて

+2

"より良い"を定義してください! - あなたが持っているものでどこに問題が見られますか? – JimmyB

+1

"良い方法"とは、正確にはどういう意味ですか?テーブルデザイン、クエリ設計? –

+1

springデータを試してみる – farrellmr

答えて

1

は、私はあなたのクエリがパラメータ化クエリであるので、あなたはパフォーマンスの向上のための@NamedQueryを使用してアドバイスします。 これはコメントではありますが、私の担当者には申し訳ありません。私を許さないでしょう。