JPA EntityManagerFacade

问题描述 投票:1回答:1

我可能有JPA EntityManagerFactory的问题。我的代码

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", "Pri");
        Student stud2 = new Student("Jan", "Pol");
        Student stud3 = new Student("Kris", "Str");

        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时,在另一个函数中我想添加一些属性,我的表是空的。我尝试了很多东西,但我不知道该怎么做。当我在main函数中调用我的查询时,它返回正确的结果。但是当我在函数zoradNeprihlasenych中调用此查询时,它返回null。当我删除emf.close() anotation时,它运作良好。怎么做?我需要在函数外的另一个函数中执行此操作。

java jpa derby entitymanager
1个回答
3
投票

尝试在Table Generation Strategy中将create设置为Validation strategy并将none设置为persistence.xml

© www.soinside.com 2019 - 2024. All rights reserved.