Hibernate没有在数据库中保存对象?

时间:2013-08-02 15:21:04

标签: java hibernate postgresql

我有以下问题,当试图在数据库中插入一个对象时,Hibernate卡住了,没有返回错误,对象没有正确保存。

调试它我发现它挂起

Hibernate: select nextval('hibernate_sequence')

我使用PostgreSQL作为数据库。

我的配置文件:

<hibernate-mapping>
    <class name="src.MyClass" table="MyClass">

    <cache usage="read-write"/>

    <id name="id" column="classid">
        <generator class="native" />
    </id>

    <property name="name" column="name" not-null="true" unique="true" length="160"/>

</class>
</hibernate-mapping>

@Override
public void save( Myclass mc)
{
    Session session = sessionFactory.getCurrentSession();

    session.save( mc);
}

SELECT部分​​有效。

我不确定我错过了什么。 同样使用本机SQL插入命令,它可以工作。

1 个答案:

答案 0 :(得分:6)

我没有看到你冲洗你的会话

Session session = sessionFactory.openSession();
session.save(mc);
session.flush();
session.close();

但最可取的是

Session session = factory.openSession();
    Transaction tx = null;
    try {
        tx = session.beginTransaction();
        session.save(mc);
        tx.commit(); // Flush happens automatically
    }
    catch (RuntimeException e) {
        tx.rollback();
        throw e; // or display error message
    }
    finally {
        session.close();
    }