2017-05-30 5 views
0

を持続されていない、私はクラス「人」を追加し、データベースに「手で」レコードの多くを追加(人のみpeopleidと文字列のpeopledescた)JPAは、私はJEE5を使用して、レガシーアプリを持つオブジェクトのJ2EE

私は方法getAllPeopleを(使用する場合)私は、リストが正しく読み込まれます、すべてのデータが

があります。しかし、私は(人々がPEP)persistPeopleを使用してコードで新しいレコードを保持しようとすると、それだけでは何も

ませんsystem.out.printlnは、オブジェクトに追加された説明を表示して、作成された新しいオブジェクトをメソッドに渡しますが、データベースに保持されません。(

コンソール出力にエラーは表示されません。

<persistence-unit name="PersistenceUnit" transaction-type="RESOURCE_LOCAL"> 
    <provider>org.hibernate.ejb.HibernatePersistence</provider> 
    <class>entities.People</class> 

persistence.xmlの

People.java

@Entity 
public class People implements Serializable { 

    @Id 
    @GeneratedValue(strategy = GenerationType.IDENTITY) 
    private int idpeople; 

    private String desc; 

......

PeopleDAOImPL.JAVA 

import javax.ejb.Stateless; 
import javax.persistence.EntityManager; 
import javax.persistence.EntityManagerFactory; 
import javax.persistence.EntityTransaction; 
import javax.persistence.Persistence; 
import javax.persistence.PersistenceContext; 
import javax.persistence.PersistenceUnit; 
import residencias.dominio.Renovacion; 


@Stateless 
public class PeopleDAOImpl implements PeopleDAO { 


    //EntityManagerFactory emf = Persistence.createEntityManagerFactory("PersistenceUnit"); 


    @PersistenceUnit(unitName="PersistenceUnit") 
    private EntityManagerFactory emf; 


    @Override 
    public void persistPeople(People pep) { 
     EntityManager em = emf.createEntityManager(); 

     System.out.println("description is :"+pep.getDesc()); 
     em.persist(pep); 


    } 


    @Override 
    public List<People> getAllPeople() { 



     EntityManager em = emf.createEntityManager(); 
     List<People> results = new ArrayList(); 
     Query queryPrincipal; 

     try { 


      queryPrincipal = em.createQuery("SELECT p FROM People p"); 




      results = queryPrincipal.getResultList(); 

      return results; 

     } catch (Exception e) { 
      System.out.println(results.size()); 
      return results; 

     } finally { 
      if (em != null) { 
       emf.close(); 
       em.close(); 
      } 
     } 

    } 

答えて

0

クエリの呼び出し中に、あなたがすることが義務付けされていませんがエンティティの状態を永続化/更新しようとすると、その特定のアクションを実行する必要がありますnトランザクション境界。

次の構成使用することができ、あなたの場合は

:)

@Stateless 
@TransactionManagement(TransactionManagementType.CONTAINER) 
public class PeopleDAOImpl implements PeopleDAO { 

    @PersistenceUnit(unitName="PersistenceUnit") 
    private EntityManagerFactory emf; 

    @Override 
    @TransactionAttribute(TransactionAttributeType.REQUIRED) 
    public void persistPeople(People pep) { 
     EntityManager em = emf.createEntityManager(); 

     System.out.println("description is :"+pep.getDesc()); 
     em.persist(pep); 


    } 
+0

が答えてくれてありがとう、私はあなたのソリューションを試みたが、のEntityManagerのem = emf.createEntityManagerを(呼び出したとき、私はnullポインタ例外が発生しました。 – Alexev

関連する問題