SpringデータJPA Repository
を実装するインスタンスからエンティティタイプまたはクラス名を取得する方法を探しています。Spring Data - リポジトリからエンティティ名/タイプを取得
Repository
インターフェイスを拡張し、いくつかの基本クエリを定義する基本インターフェイスを拡張した多数のインターフェイスがあります。
@NoRepositoryBean
public interface EnumerationRepository<T extends IDatabaseEnumeration> extends Repository<T, String> {
// ...
}
public interface SampleEnumerationRepository extends EnumerationRepository<SampleEnumeration> {
}
春は私がジェネリックメソッドの内部簡単にアクセスMap
にこれらの実装のすべてを置くことを望んでいた豆
@Autowired
private Collection<EnumerationRepository<? extends IDatabaseEnumeration>> repositories;
にコレクションとして、すべてのこれらのインタフェースの実装を注入することができます。エンティティのタイプや名前をキーとして使用したいと思っていましたが、どこから取得するかわかりません。これらの属性のいずれかを取得する方法はありますか?好ましくは、クラスタイプ。
このようなクエリを使用して、目的の動作を達成することができました。しかし、可能であれば、このソリューションを避けたいのですが、それは基盤となるDBに依存してしまうからです。彼らはこの答えを使用して、インタフェースからタイプにバインドされている場合は、型引数を取得することができます
@Query(value = "select '#{#entityName}' from dual", nativeQuery = true)
public String getEntityName();
「デュアルから」を削除し、nativeQueryの部分を削除してください。それは、バニラJPAクエリとして動作するはずです。 –
それは不幸に働かなかった。今は、クエリが不完全なので、この例外が発生しています。 '原因:org.hibernate.hql.internal.ast.QuerySyntaxException:予期せぬサブツリーの終わり[select 'SampleEnumeration']' –
私は個人的なプロジェクトでこれと同じことをしたことを100%誓いましたが、私は見つけることができませんそれは今です。私は今夜後でさらに検索します。その間、私は今のところ「デュアルから」ネイティブを残しておきます。 –