diff --git a/tooling/metamodel-generator/src/main/java/org/hibernate/processor/annotation/AnnotationMetaEntity.java b/tooling/metamodel-generator/src/main/java/org/hibernate/processor/annotation/AnnotationMetaEntity.java index d4f0bcfdd011..2534e3df0b9a 100644 --- a/tooling/metamodel-generator/src/main/java/org/hibernate/processor/annotation/AnnotationMetaEntity.java +++ b/tooling/metamodel-generator/src/main/java/org/hibernate/processor/annotation/AnnotationMetaEntity.java @@ -354,14 +354,15 @@ public boolean isInjectable() { @Override public String scope() { - if (jakartaDataRepository) { - return context.addTransactionScopedAnnotation() - ? "jakarta.transaction.TransactionScoped" - : "jakarta.enterprise.context.RequestScoped"; - } - else { - return "jakarta.enterprise.context.Dependent"; - } + // @TransactionScoped doesn't work here because repositories + // are supposed to be able to demarcate transactions, which + // means they should be injectable when there is no active tx + // @RequestScoped doesn't work because Arc folks think this + // scope should only be active during a HTTP request, which + // is simply wrong according to me, but whatever + // @ApplicationScoped could work in principle, but buys us + // nothing additional, since repositories are stateless + return "jakarta.enterprise.context.Dependent"; } @Override