Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Hibernate会话/EntityManager在提交()后关闭_Java_Hibernate_Session - Fatal编程技术网

Java Hibernate会话/EntityManager在提交()后关闭

Java Hibernate会话/EntityManager在提交()后关闭,java,hibernate,session,Java,Hibernate,Session,我今天刚刚学会了如何使用Hibernate,我正在处理一个小数据库 public class HibernateQuery { private static final SessionFactory sessionFactory = HibernateUtil.getSessionFactory(); private static final Session session = sessionFactory.getCurrentSession(); public st

我今天刚刚学会了如何使用Hibernate,我正在处理一个小数据库

public class HibernateQuery {

    private static final SessionFactory sessionFactory = HibernateUtil.getSessionFactory();
    private static final Session session = sessionFactory.getCurrentSession();

    public static void main(String[] args) {
        queryA();
        queryB();
        session.close();
        sessionFactory.close();
    }

    public static void queryA() {
        Transaction tx = session.beginTransaction();
        List<GradesJPA> lst = session.createQuery("from GradesJPA", GradesJPA.class).list();
        for(GradesJPA each : lst) {
            System.out.println(each);
        }
        tx.commit();
    }

    public static void queryB() {
        Transaction tx = session.beginTransaction();
        List<String> lst = session.createQuery("select g.className from GradesJPA g", String.class).list();
        for(String each : lst) {
            System.out.println(each);
        }
        tx.commit();
    }
}

谢谢。

getCurrentSession()
生成一个
会话
,一旦提交事务,该会话将自动关闭。您希望使用
openSession()
替代。或者,如果您坚持使用
getCurrentSession()
,请参阅
Exception in thread "main" java.lang.IllegalStateException: Session/EntityManager is closed
    at org.hibernate.internal.AbstractSharedSessionContract.checkOpen(AbstractSharedSessionContract.java:360)
    at org.hibernate.engine.spi.SharedSessionContractImplementor.checkOpen(SharedSessionContractImplementor.java:139)
    at org.hibernate.internal.AbstractSharedSessionContract.beginTransaction(AbstractSharedSessionContract.java:465)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:564)
    at org.hibernate.context.internal.ThreadLocalSessionContext$TransactionProtectionWrapper.invoke(ThreadLocalSessionContext.java:350)
    at com.sun.proxy.$Proxy33.beginTransaction(Unknown Source)
    at hibernate.HibernateQuery.queryB(HibernateQuery.java:38)
    at hibernate.HibernateQuery.main(HibernateQuery.java:18)