私はJPA 2.1プロジェクトを持っています。データベースには2つのテーブルがあります。私はインターフェイス「UsedClasses.java」を作成し、両方のエンティティがインタフェースを実装していている。すなわち、JPAエンティティのインタフェースから@NamedQueryを取得する
@Entity
@Table(name = "runRanges")
@NamedQuery(name = "RunRange.findAll", query = "SELECT r FROM RunRange r")
public class RunRange extends AbstractTimestampEntity implements UsedClasses, Serializable ....
と
@Entity
@Table(name = "users")
@NamedQuery(name = "User.findAll", query = "SELECT u FROM User u")
public class User extends AbstractTimestampEntity implements UsedClasses, Serializable ...
私はNamedQueryをつかむためにインタフェースを使用することができるかどうかを知るために好奇心いずれかのエンティティについて。 クラスに応じて結果リストを取得しようとしたら、何を達成しようとしていますか?
あなたがそれを行うことができますが、あなたはNamedQuery
注釈を取得するためにリフレクションを使用する必要がありますし、あなたが
UsedClasses
インスタンスではなく、あなたの例のようなインターフェイスを持っている必要があります
public List<UsedClasses> getAllItems() {
open();
Query query = EntityManagerHandler.INSTANCE.getEntityManager().createQuery(UsedClasses.class.getResource(NamedQueries));
List<UsedClasses> aList = query.getResultList();
return aList;
}
最初の提案に: クエリクエリ= EntityManagerHandler.INSTANCE.getEntityManager()。createQuery(UsedClasses.class.getResource(NamedQueries)); これは機能しません。エラーメッセージは、 NamedQueriesを変数に解決できません。 2番目の提案に : 私はクラスのインクルードは、クエリを作成するには、私はUsedClassesをインスタンス化していないので、それを使用する方法を理解していません。 getNamedQueryForGetAll()メソッドを呼び出すにはどうすればよいですか? – mkunkel
あなたが私が編集していた時、あなたはその質問に答えました。ごめんなさい。しかし、今はインスタンスがどのクラスをどのようにインターフェースしているかを知ることができません。 – mkunkel