0

JPA、jsf2.0 Hibernate プロジェクトに取り組んでいます。これは、ここで見ることができるプライムフェイス カレンダーによるユーザーのアクションの管理です。

ユーザーのアクションを取得してカレンダーに表示することができましたが、新しいアクションを追加したいときはうまくいくようです:エラーメッセージはありませんが、実際にはアクションはデータベースに追加されていません. persist メソッドが機能していないようです。エラー メッセージが返されないため、その理由を確認するために何をすればよいかわかりません。

これらの 2 つのアクション (表示と追加) の 2 つの関数をここに示します。

アクションを追加する方法(動作しません)

public void creerAction(Action action){


     Date date = action.getDateAction();
     action.setDateAction(date);



     EntityManagerFactory emf = null;


        try{
        emf = Persistence.createEntityManagerFactory("GA2010-ejbPU-dev");
        em = emf.createEntityManager();


         em.persist(action);



        FacesMessage message = new FacesMessage("Action  " + action.getTexteAction()+ " ajouté avec succès");
        FacesContext.getCurrentInstance().addMessage(null, message);

     }catch(PersistenceException e){
         System.out.println(e.getMessage());
     }



    }

そして、ユーザーのすべてのアクションを取得するメソッド (動作します)

public List<Action> getAllAction(){
                HttpSession sess = (HttpSession) FacesContext.getCurrentInstance().getExternalContext().getSession(true);

        String codeUser =  (String) sess.getAttribute("codeUser");

        EntityManagerFactory emf = null;

        try{
        emf = Persistence.createEntityManagerFactory("GA2010-ejbPU-dev");
        em = emf.createEntityManager();



         Query requete = em.createQuery(SELECT_ALL_ACTION);
          requete.setParameter("codeUtilisateur", codeUser);

         this.allAction= requete.getResultList();



        }catch(Exception e){

         this.message = new FacesMessage(e.getMessage())    ;
         FacesContext.getCurrentInstance().addMessage( null, message );

        }


        return allAction;



    }

そして、これが私のユニット永続性の宣言です

<persistence-unit name="GA2010-ejbPU-dev" transaction-type="JTA">

        <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
        <jta-data-source>dev</jta-data-source>
         <class>entities.Utilisateur</class>
         <class>entities.Action</class>
        <properties>
          <property name="eclipselink.target-server" value="SunAS9"/>
          <property name="eclipselink.logging.level" value="FINE"/>
          <property name="eclipselink.ddl-generation" value="drop-and-create-tables"/>
          <property name="eclipselink.ddl-generation.output-mode" value="sql-script"/>
          <property name="eclipselink.application-location" value="C:/tmp"/>
        </properties>

persist が保持されない理由と、エラー メッセージが表示されない理由を確認するにはどうすればよいですか?

4

1 に答える 1

0

永続化は、トランザクション内から行う必要があります。トランザクションをコミットするまで、オブジェクトは保持されません。

Hibernate EntityManager チュートリアル

于 2013-03-22T10:25:00.617 に答える