The binding

bind(EntityManager.class).annotatedWith(ConnectionDatabase.class).to(EntityManager.class);

tells guice to use the default binding of defined for EntityManager. So there must be somewhere a binding or a provider method which defines how to get an implementation of the EntityManager interface.

If you need JPA with guice have a look at onami-persist.


On 29.09.2016 18:51, Robério Cardoso Fernandes wrote:
My project have some maven modules, one of that is the repository module, an other is the web module. In repository module I'm using the google guice to do the dependency injection, and any more. In web module I'm using the tomEE, and that module have all others (api, services and repositories). My problem was in repository module, when I would inject the EntityManager object in repositories, to solve this problem I put in the implementation of Guice AbstractModule it:
bind(EntityManager.class).annotatedWith(ConnectionDatabase.class).to(EntityManager.class);

What do you thing about?


Thank you for the attention!


Em quarta-feira, 28 de setembro de 2016 19:47:57 UTC-3, scl escreveu:

    I am not 100% sure but I think guice does not support the
    @Produces annotation.
    So far I only used @Provides

    Also if you are using tomEE you already have a CDI container. What
    is your reason to use guice in such an environment.

    Don't missunderstand me. I prefer guice over CDI but why chose
    tomEE and then don't use its feature...

    Am 28. September 2016 19:36:28 MESZ, schrieb "Robério Cardoso
    Fernandes" <[email protected] <javascript:>>:

        I'm doing the integration tests with Apache OpenEJB (tomee).
        The bind is done when the container is started.



        Em quarta-feira, 28 de setembro de 2016 14:12:46 UTC-3, scl
        escreveu:

            Where do you bind the EntityManager? Is it bound just in
            time? At runtime do you have a container or similar which
            provides the EntityManager?

            Am 28. September 2016 17:20:16 MESZ, schrieb "Robério
            Cardoso Fernandes" <[email protected]>:

                Hi folks,
                I'm doing the unit tests in my project, and I'm trying
                to use the Google Guice. My repository classes have
                your EntityManagers, and, in my project, to specify
                the persistence unit I have an annotation:

                @javax.inject.Qualifier
                @java.lang.annotation.Retention(RUNTIME)
                @java.lang.annotation.Target({FIELD, TYPE, METHOD})
                public @interface ConnectionDatabase {
                }


                In my repositories the entity managers are injected
                like this:

                public class MyRepository implements IMyRepository {

                    @javax.inject.Inject
                    @ConnectionDatabase
                    private javax.persistence.EntityManager entityManager;
                }


                M ResourceProducer, like this:

                public class ResourceProducer {

                    @javax.enterprise.inject.Produces
                    @Inject
                    @ConnectionDatabase
                    private javax.persistence.EntityManager entityManager;
                }


                My Module of Google Guice is like this:

                public class ModuleTest extends AbstractModule {

                    @Override
                    public void configure() {
                        bind(new TypeLiteral<IMyRepository>()
                {}).to(MyRepository.class);
                    }
                }


                I have a persistence.xml with a persistence unit
                called "TestPU".


                In my unit tests (or cintegration tests), using the
                Google Guice, the EntityManager is not injected, and
                the following error is occurring:
                No implementation for javax.persistence.EntityManager
                annotated with @ConnectionDatabase() was bound.
                  while locating javax.persistence.EntityManager
                annotated with @ConnectionDatabase()
                    for field at MyRepository.entityManager(<the line>)
                  at ModuloTest.configure(<the line of the bind
                "bind(new TypeLiteral<IMyRepository>()
                {}).to(MyRepository.class)">)


                Someone here can help me, please?

--
You received this message because you are subscribed to the Google Groups "google-guice" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected] <mailto:[email protected]>. To post to this group, send email to [email protected] <mailto:[email protected]>.
Visit this group at https://groups.google.com/group/google-guice.
To view this discussion on the web visit https://groups.google.com/d/msgid/google-guice/eeb80f3e-2d84-429a-9a08-721dd314b72b%40googlegroups.com <https://groups.google.com/d/msgid/google-guice/eeb80f3e-2d84-429a-9a08-721dd314b72b%40googlegroups.com?utm_medium=email&utm_source=footer>.
For more options, visit https://groups.google.com/d/optout.

--
You received this message because you are subscribed to the Google Groups 
"google-guice" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/google-guice.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/google-guice/1883131d-7ae9-21da-a628-0b738daff4cf%40gmx.ch.
For more options, visit https://groups.google.com/d/optout.

Reply via email to