Hibernate HSQLDB两个会话

Hibernate HSQLDB两个会话,hibernate,hsqldb,Hibernate,Hsqldb,我通过读书和做例子来学习冬眠。我正在看上面的例子 网站 这是一个有Java示例的知名网站。在这个例子中,它使用了我在它自己的JVM中运行的HSQLDB。由于某种原因,在使用第二个会话时,此示例似乎挂起。所以问题是,这个例子有问题吗?你能让一个人看一下它并确定它是否是一个有效的例子吗 问题出在主类中(请参见下面的代码)Event event2=(Event)session2.load(Event.class,Event.getId());这条线挂着 谢谢我们的帮助。注意:如果此代码不正确,请告诉w

我通过读书和做例子来学习冬眠。我正在看上面的例子

网站

这是一个有Java示例的知名网站。在这个例子中,它使用了我在它自己的JVM中运行的HSQLDB。由于某种原因,在使用第二个会话时,此示例似乎挂起。所以问题是,这个例子有问题吗?你能让一个人看一下它并确定它是否是一个有效的例子吗

问题出在主类中(请参见下面的代码)Event event2=(Event)session2.load(Event.class,Event.getId());这条线挂着

谢谢我们的帮助。注意:如果此代码不正确,请告诉www.java2s.com上的人。。。如果它真的起作用,请告诉我我可能做错了什么

我正在使用这个示例,并增加了连接计数和许多其他更改。是否有一些更改可以使TwoSessions示例正常工作

谢谢你的帮助 理查德

公共静态void main(字符串[]args){ //setup(“创建表事件(uid int,name VARCHAR,start_Date,duration int)”


}

该代码可能是为HSQLDB1.8编写的,它的事务处理能力有限。当前版本期望每个连接在数据库中自己的线程中运行。使用两个单独的线程。

Ok上面的代码似乎不起作用。您需要创建一个事务,以便创建一个session.beginTransaction();和一个session.getTransaction().commit();这是需要的。如果您尝试Hibernate示例,请查找此代码。
// hibernate code start
    HibernateFactory.buildSessionFactory();
    Session session = HibernateFactory.openSession();
    Session session2 = HibernateFactory.openSession();
    Event event = new Event();
    event.setName("Name");
    session.save(event);
    session.flush();
    Event event2 = (Event) session2.load(Event.class, event.getId());
    System.out.println(event2.getName());
    HibernateUtil.checkData("select uid, name from events");        
// hibernate code end