[ 
https://issues.apache.org/jira/browse/DELTASPIKE-315?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13584146#comment-13584146
 ] 

Mark Struberg commented on DELTASPIKE-315:
------------------------------------------

Not sure how you like to implement this. We need a Bean<EntityManager> which 
would somehow manage to lookup the persistence unit it is supposed for. But 
since we need to produce NormalScoped (@RequestScoped, @TransactionScoped) 
EntityManagers we do not have any InjectionPoint we can lookup. And 
Bean<T>#create() doesn't take any additional qualifier info ..

We would need to parse all Qualifiers which are @PersistenceUnitName 
meta-annotated and register beans for those. But ProcessAnnotatedType doesn't 
get fired for annotations. The only way would be to @Observes 
ProcessInjectionPoint to collect this info. But I'm really not sure if this is 
worth it to avoid this 5 lines of code a user needs to write...
                
> Provide a producer for EntityManagerFactories
> ---------------------------------------------
>
>                 Key: DELTASPIKE-315
>                 URL: https://issues.apache.org/jira/browse/DELTASPIKE-315
>             Project: DeltaSpike
>          Issue Type: Bug
>          Components: JPA-Module
>    Affects Versions: 0.3-incubating
>            Reporter: Mark Struberg
>            Assignee: Mark Struberg
>             Fix For: 0.4-incubating
>
>
> I found myself using the following pattern quite often in projects in the 
> last time. I have a @Qualifier UnitName(value) and a producer for a 
> @Dependent EntityManagerFactory for it. The configuration is mostly provided 
> via the persistenceProperties Map in 
> EntityManagerFactory#createEntityManagerFactory(unitname, 
> persistenceProperties);
> We can further tweak the config lookup path and define a route which makes 
> the most sense.
> This can be used to create the EntityManager producer very easily.
> @ApplicationScoped
> public class MyEntityManagerProducer {
>   private @Inject @UnitName("orderUnit") EntityManagerFactory emf;
>   
>   @Produces @RequestScoped
>   public EntityManager createEm() {
>     return emf.createEntityManager();
>   }
>   .. + disposer 
> }
> Please note that the EMF producer doens't clash with anything else as it only 
> produces EMFs with the Qualifier @UnitName!

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to