2016-09-01 12 views
1

Я работаю над проектом Java EE 7 maven. Я использую wildfly 8.2. Все это проблема, когда я создаю диспетчер сущностей, используя @PersistenceContext внутри управляемых бэбинов (поддерживающих bean-компонентов), которые я использую с моим jsf-коннектором, создающим entit manager object и его работа, но когда я пытаюсь использовать сундук maanger внутри моего DAO Layer, это не работает, у них остается нулевое значение, и я не знаю, почему этот код на моем уровне dao может мне помочь? ,Почему EntityManager имеет нулевое значение на моем уровне dao?

интерфейс дао:

public interface ICategoryDao { 
     Category addCategory(Category category); 
     void deleteCategory(Long codeCategory); 
     Set<Category> getAllCategories(); 
     Category updateCategory(Category category); 

    } 

дао осущ:

@Named("categoryDao") 
public class CategoryDao implements ICategoryDao{ 

    private Logger log = Logger.getLogger(CategoryDao.class); 
    @PersistenceContext(unitName="BooksStore") 
    private EntityManager em ; 
    @Override 
    public Category addCategory(Category category) { 
     if(em==null) 
     { 
      log.info("em is null "); 
      return category; 
     } 
     em.getTransaction().begin(); 
     em.persist(category); 
     em.getTransaction().commit(); 
     log.info("CategoryDao : Object persisted."); 
     return category; 
    } 

    @Override 
    public void deleteCategory(Long codeCategory) { 
     // TODO Auto-generated method stub 

    } 

    @Override 
    public Set<Category> getAllCategories() { 
     // TODO Auto-generated method stub 
     return null; 
    } 

    @Override 
    public Category updateCategory(Category category) { 
     // TODO Auto-generated method stub 
     return null; 
    } 

} 

это мой beans.xml

<beans xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation=" 
     http://xmlns.jcp.org/xml/ns/javaee 
     http://xmlns.jcp.org/xml/ns/javaee/beans_1_1.xsd" bean-discovery-mode="all"> 

</beans> 

Мои persistance.xml файл:

<?xml version="1.0" encoding="UTF-8"?> 
<persistence version="2.1" xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd"> 
    <persistence-unit name="BooksStore" transaction-type="JTA"> 
    <jta-data-source>java:/bookstore</jta-data-source> 
    <properties> 
    <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect" /> 
      <property name="hibernate.show_sql" value="true" /> 
      <property name="hibernate.hbm2ddl.auto" value="update" /> 
    </properties> 
    </persistence-unit> 
</persistence> 
+0

У вас есть пример того, как вы используете 'ICategoryDao'? –

+0

Спасибо. Теперь это работа. Просто добавьте эти две аннотации EJB: «@Singleton» «@TransactionManagement (TransactionManagementType.CONTAINER) –

+0

@ErrabiAyoub, поскольку вы нашли ответ самостоятельно, ваш должен опубликовать его как ответ и принять его –

ответ

-2

У вас есть файл persistence.xml? Это пример для persistence.xml файла:

<?xml version="1.0" encoding="UTF-8"?> 

<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/persistence 
    http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"> 

    <persistence-unit name="School_Manager" transaction-type="RESOURCE_LOCAL"> 


     <class>YourEntityFQN</class>  


    <properties> 

имя атрибута на persistence.xml файл должен быть «BooksStore» в вашем случае. В теге класса вам нужно указать всю сущность, которую вы хотите использовать для этой единицы постоянства.

+0

Да База данных была сгенерирована Моя проблема связана с аннотацией Inject и PersistenceContext не работает, когда я хочу создать диспетчер объектов, поэтому у меня остается нулевое значение –

+1

Можете ли вы попробовать изменить атрибут типа транзакции из JTA в RESOURCE_LOCAL, пожалуйста, попробуйте удалить тег . Скажите, если он работает. – pioardi

+0

Да, я думаю, что ваше решение будет работать, если я запустил приложение на tomcat, но я использую JTA, источник данных был развернут на wildfly server и все таблицы были созданы в базе данных, что означает, что это не poblem с конфигурацией jpa. Я думаю, что моя проблема связана с введением CDI –

 Смежные вопросы

  • Нет связанных вопросов^_^