LINUX.ORG.RU

История изменений

Исправление memnek, (текущая версия) :

вроде переделал, использую JPA с поставщиком в виде Hibernate.

Теперь вылезли проблемы в виде NullPointerException при работе EntityManager'a. У меня есть сущность (почти не изменилась), класс TaskFacade:

@Stateless
public class TaskFacade {
    @PersistenceContext(unitName = "TaskPU")
    private EntityManager em; // это поле всегда null

    public List<Task> findAll() {
        CriteriaQuery cq = em.getCriteriaBuilder().createQuery();
        cq.select(cq.from(Task.class));
        return em.createQuery(cq).getResultList();
    }
}
И контроллер:
@ManagedBean(name = "taskController")
@SessionScoped
public class TaskController {

    private Task current;

    @EJB
    private TaskFacadeLocal ejbFacade;

    public List<Task> getTasks() {
        return ejbFacade.findAll();
    }
конфиг БД
<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="2.0">

    <persistence-unit name="TaskPU">
        <provider>org.hibernate.ejb.HibernatePersistence</provider>
        <class>jgantt.jpa.entities.Task</class>
        <properties>
            <property name="hibernate.connection.url" value="jdbc:sqlite:/path/to/db.db"/>
            <property name="hibernate.connection.driver_class" value="org.sqlite.JDBC"/>
            <property name="hibernate.dialect" value="jgantt.jpa.util.SQLiteDialect"/>
            <property name="hibernate.connection.username" value=""/>
            <property name="hibernate.connection.password" value=""/>
            <property name="hibernate.archive.autodetection" value="class"/>
            <property name="hibernate.show_sql" value="true"/>
            <property name="hibernate.format_sql" value="true"/>
            <property name="hbm2ddl.auto" value="update"/>
        </properties>
    </persistence-unit>
</persistence>
Проблема в том, что при вызове findAll возникает NPE, потому что em == null.

Читал, что надо модифицировать класс TaskFacade, чтобы он стал управляемым (managed) или настроить правильно БД. Однако что-то ничего не вышло, либо я делал что-то не то. Не подскажешь, как решить эту проблему?

Исходная версия memnek, :

вроде переделал, использую JPA с поставщиком в виде Hibernate.

Теперь вылезли проблемы в виде NullPointerException при работе EntityManager'a. У меня есть сущность (почти не изменилась), класс TaskFacade:

@Stateless
public class TaskFacade {
    @PersistenceContext(unitName = "TaskPU")
    private EntityManager em;

    public List<Task> findAll() {
        CriteriaQuery cq = em.getCriteriaBuilder().createQuery();
        cq.select(cq.from(Task.class));
        return em.createQuery(cq).getResultList();
    }
}
И контроллер:
@ManagedBean(name = "taskController")
@SessionScoped
public class TaskController {

    private Task current;

    @EJB
    private TaskFacadeLocal ejbFacade;

    public List<Task> getTasks() {
        return ejbFacade.findAll();
    }
конфиг БД
<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="2.0">

    <persistence-unit name="TaskPU">
        <provider>org.hibernate.ejb.HibernatePersistence</provider>
        <class>jgantt.jpa.entities.Task</class>
        <properties>
            <property name="hibernate.connection.url" value="jdbc:sqlite:/path/to/db.db"/>
            <property name="hibernate.connection.driver_class" value="org.sqlite.JDBC"/>
            <property name="hibernate.dialect" value="jgantt.jpa.util.SQLiteDialect"/>
            <property name="hibernate.connection.username" value=""/>
            <property name="hibernate.connection.password" value=""/>
            <property name="hibernate.archive.autodetection" value="class"/>
            <property name="hibernate.show_sql" value="true"/>
            <property name="hibernate.format_sql" value="true"/>
            <property name="hbm2ddl.auto" value="update"/>
        </properties>
    </persistence-unit>
</persistence>
Проблема в том, что при вызове findAll возникает NPE. Читал, что надо модифицировать класс TaskFacade, чтобы он стал управляемым (managed) или настроить правильно БД. Однако что-то ничего не вышло, либо я делал что-то не то. Не подскажешь, как решить эту проблему?