EntityManager является нулевым в DAO, используя @PersistenceContext сaction-type = "JTA" - PullRequest
0 голосов
/ 04 июня 2018

У меня проблема с внедрением Entity Manager в классе DAO, я искал много решений, но не смог решить эту проблему.

У меня EJB Bean Class

@Stateless(name = "MyBean", mappedName = "MyBean")
@Remote(MYRemoteBeanI.class)
public class MyBeanImpl implements MYRemoteBeanI {

@EJB
MyDAO dao; // This DAO gets injected. But entity manager inside this DAO is null

}

DAO class

@Stateless
public class MyDAO {

//This is not injecting, it will be always null
@PersistenceContext(unitName="MyPersistenceUnit")
private EntityManager entityManager; 

}

Persistence.xml, как показано ниже

<persistence-unit name="MyPersistenceUnit" transaction-type="JTA">
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
<jta-data-source>myDataSource</jta-data-source>
<mapping-file>META-INF/orm.xml</mapping-file>
<!-- Some managed classes -->
<!-- Some properties -->
</persistence-unit>
</persistence>

Просьба помочь мне решить эту проблему.Я новичок в мире EJB!

1 Ответ

0 голосов
/ 25 июня 2018

Кажется, вы не читаете ваш блок персистентности из файла Persistence.xml.Где находится xml?

Вот рабочий пример подключения Jboss 7 / Wildfly к базе данных Oracle.

@Stateless
public class MyServiceImpl implements MyService {
    @EJB(name = "myDAO")
    private MyDAO segmentDTO;
}

@Local
public interface MyDAO {

}

@Stateless
public class MyDAOImpl implements MyDAO {
    @PersistenceContext(unitName = "exampleEM")
    protected EntityManager entityManager;
}

resources / META-INF / persistence.xml

<persistence>
    <persistence-unit name="exampleEM" transaction-type="JTA">
        <provider>org.hibernate.ejb.HibernatePersistence</provider>

        <jta-data-source>java:jboss/datasources/ExampleDS</jta-data-source>
        <!-- your entities -->

        <properties>
            <property name="hibernate.connection.autocommit" value="false" />
            <property name="hibernate.dialect" value="org.hibernate.dialect.OracleDialect" />
            <property name="hibernate.show_sql" value="false" />
            <property name="hibernate.format_sql" value="false" />
            <property name="hibernate.use_sql_comments" value="false" />
            <property name="hibernate.id.new_generator_mappings" value="true"/>
            <property name="hibernate.hbm2ddl.auto" value="create-drop" />
        </properties>
    </persistence-unit>
</persistence>
...