CDI インスタンスに問題があります。プロジェクトには、複数の JPA EntityManager があります。使用するエンティティ マネージャー修飾子でエンティティに注釈を付けたいと考えています。これは注釈です:
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
public @interface ManagedEntity {
Class<? extends Annotation> value() default BaseEntityManager.class;
}
私のエンティティには注釈が付けられています:
@Entity
@Table(name="TEST")
@ManagedEntity(StandardEntityManager.class)
public class MyEntity { ... }
後で、このエンティティを使用していくつかのクエリを作成し、クエリ コンテキストを保存するだけです。このコンテキストでクエリを実行できます。私が必要としているのは、適切なエンティティ マネージャーを取得する方法です。だから私は EntityManager インスタンスを注入し、正しいものを選択しようとしました。
@Inject
@Any
private Instance<EntityManager> entityManagers;
...
// Read out the ManagedEntity and check for mixed managers
Class<? extends Annotation> manager = getQueryManager(queryContext);
...
// Select requires Annotation
EntityManager em = entityManagers.select(... classname to annotation ...).get();
// ... QueryContext to query and execute here ...
私の問題は、クラス名から注釈を取得する方法が見つからないことです。新しいインスタンス cdi がそれを受け入れていない場合、AnnotationLiteral の構築は動的に機能しません (訂正しますか?)
誰でも私を助けることができますか?