2015-04-23 3 views
1

Возможно, у меня проблема с JPA EntityManagerFactory. Мой кодJPA EntityManagerFacade

import entity.ProgrammEQ; 
import entity.Student; 
import java.util.List; 
import javax.persistence.EntityManager; 
import javax.persistence.EntityManagerFactory; 
import javax.persistence.Persistence; 
import javax.persistence.Query; 
/** 
* 
* @author Kristián 
*/ 
public class Zapoctovka_priklad { 

    /** 
    * @param args the command line arguments 
    */ 
    public static void main(String[] args) { 
     EntityManagerFactory emf = Persistence.createEntityManagerFactory("zapoctovka_prikladPU"); 
     EntityManager em = emf.createEntityManager(); 

     em.getTransaction().begin(); 

     Student stud1 = new Student("Tomáš", "Prieboj"); 
     Student stud2 = new Student("Ján", "Poláček"); 
     Student stud3 = new Student("Kristián", "Stroka"); 

     em.persist(stud1); 
     em.persist(stud2); 
     em.persist(stud3); 

     em.getTransaction().commit(); 

     em.close(); 
     emf.close(); 

     zaradNeprihlasenych("Aplikovaná informatika"); 
    } 

    public static void zaradNeprihlasenych(String programmName) { 
     EntityManagerFactory emf = Persistence.createEntityManagerFactory("zapoctovka_prikladPU"); 
     EntityManager em = emf.createEntityManager(); 

     Query q1 = em.createQuery("SELECT a FROM Student a WHERE a.StudProgram = NULL"); 
     System.out.println("ahoj" + q1.getResultList().toString()); 

     em.getTransaction().begin(); 
     ProgrammEQ prog = new ProgrammEQ(); 
     prog.setIdEQ(programmName); 
     prog.setStudentCount(0); 

     List<Student> studenti = q1.getResultList(); 

     for (Student s : studenti) { 
      System.out.println(s); 
      s.setStudProgram(prog); 
     } 
     em.persist(prog); 
     em.getTransaction().commit(); 

     em.close(); 
     emf.close(); 
    } 

} 

У меня проблема. Когда я вставляю данные в студент таблицы, вы можете быть в порядке. После этого, когда я закрываю EntityManager и EntityManagerFactory, а в другой функции я хочу добавить некоторые свойства, моя таблица пуста. Я пробовал много чего, но я не знаю, как это сделать. Когда я вызываю свой запрос в основной функции, он возвращает правильные результаты. Но когда я вызываю этот запрос в функции zoradNeprihlasenych, он возвращает null. Когда я удаляю emf.close() anotation, он работает хорошо. Как это сделать? Мне нужно сделать это в другой функции вне функции.

ответ

2

Попробуйте установить Table Generation Strategy в create и Validation strategy к none в persistence.xml.