【发布时间】:2017-06-11 17:25:30
【问题描述】:
我想运行这个非常基本的 Hibernate 代码:
public static void main(String[] args) throws Exception
{
SessionFactory sessFact = HibernateUtil.getSessionFactory();
Session session = sessFact.getCurrentSession();
Transaction tr = session.beginTransaction();
SystemUsers myContact = new SystemUsers(3);
SystemUsers yourContact = new SystemUsers(4);
SystemUsers yourContsact = new SystemUsers(5);
SystemUsers yourContssssact = new SystemUsers(6);
SystemUsers yourContssssasssct = new SystemUsers(7);
// Saving to the database
session.save(myContact);
session.save(yourContact);
session.save(yourContsact);
session.save(yourContssssact);
session.save(yourContssssasssct);
session.flush();
tr.commit();
List<SystemUsers> contactList = session.createQuery("from SYSTEM_USERS").list();
for (SystemUsers contact : contactList)
{
System.out.println("Id: " + contact.getId());
}
System.out.println("Successfully inserted");
sessFact.close();
}
配置文件:
<hibernate-configuration>
<session-factory>
<property name="hibernate.show_sql">true</property>
<property name="hibernate.format_sql">true</property>
<property name="hibernate.dialect">org.hibernate.dialect.SQLiteDialect</property>
<property name="hibernate.connection.driver_class">org.sqlite.JDBC</property>
<property name="hibernate.connection.url">jdbc:sqlite:/C:/sqlite/test.sqlite</property>
<property name="hibernate.connection.username"></property>
<property name="hibernate.connection.password"></property>
<property name="hibernate.connection.release_mode">auto</property>
<property name="current_session_context_class">thread</property>
<property name="hibernate.connection.autoReconnect">true</property>
<property name="hibernate.hbm2ddl.auto">update</property>
<mapping class="com.web.models.SystemUsers"/>
</session-factory>
</hibernate-configuration>
我得到错误:
Exception in thread "main" java.lang.IllegalStateException: Session/EntityManager is closed
at org.hibernate.internal.AbstractSharedSessionContract.checkOpen(AbstractSharedSessionContract.java:337)
at org.hibernate.engine.spi.SharedSessionContractImplementor.checkOpen(SharedSessionContractImplementor.java:135)
at org.hibernate.internal.AbstractSharedSessionContract.createQuery(AbstractSharedSessionContract.java:648)
at org.hibernate.internal.AbstractSharedSessionContract.createQuery(AbstractSharedSessionContract.java:102)
我使用最新的 Hibernate 版本。你能给我一些建议,我该如何解决这个问题?
可能我需要初始化不同的工厂?
【问题讨论】:
-
您能否发布完整的堆栈跟踪以查看异常被触发的位置
标签: java hibernate nhibernate-mapping