2013-08-02 80 views
1

我試圖在數據庫中插入一個對象時出現以下問題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

OMG,請使用註解。當JPA 2存在時,不要浪費y/ou/r時間:) –

+1

序列'hibernate_sequence'是否存在? –

+1

你需要確定你在session()中的save()後開始()和提交()(或者它是flush()嗎?)Session對象內部的transaccion讓save()工作 –

回答

4

我did'nt看你那沖洗會話

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(); 
    } 
+0

它與沖洗工作。大聲笑我浪費了很多時間在這個問題上。至少我已經學會了如何用Hibernate進行調試......謝謝 – Mythul

+0

@Mythul很高興幫助:) –

+0

非常感謝!調用session.flush()幫助!有趣的是,當使用MySQL時,所有工作都沒有明顯的衝突。我需要這個問題,我在這裏描述:http://stackoverflow.com/questions/40708288/atomikos-data-not-getting-saved-when-using-postgresql – informatik01