我在Hibernate中有一個事務。我保存一個對象session.save()
和其他使用session.getNamedQuery().executeUpdate()
。 問題是第二個對象依賴於第一個存在,但即使這兩個調用都在同一事務上,當我嘗試使用namedQuery插入時,第一個對象「仍然不存在」。 如果我flush()
會議它的工作,但我現在不是,如果這是一個很好的做法,操縱這樣的會議。休眠 - 在同一事務中保存並插入getNamedQuery
Session session = HibernateSessionManager.getSessionFactory().getCurrentSession();
Transaction transaction = null;
try {
transaction = session.beginTransaction();
session.save(myObjectToSave);
session.flush(); //only works with this line in between
session.getNamedQuery("ar.com.portal.bean.Application.insertLang").executeUpdate();
transaction.commit();
} catch (Exception e) {
if (transaction != null) transaction.rollback();
throw e;
}
這是正確的解決方案嗎?或者取決於一些配置參數?我是Hibernate的新手。
編輯:
這些都是我在hibernate.cfg.xml中已經
<property name="connection.pool_size">10</property>
<property name="dialect">org.hibernate.dialect.PostgreSQLDialect</property>
<property name="current_session_context_class">thread</property>
<property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property>
<property name="show_sql">true</property>
namedQuery的內容屬性
<sql-query name="insertLang" >
insert into APPLICATION_LANG (APPLICATION_ID, ISO_LANGUAGE_ID, WORKSPACE_ID, NAME, DESCRIPTION)
values (:id, :lang, :systemObject.workspace.id, :name, :description)
</sql-query >
什麼是組態的沖洗模式? –
在我的hibernate.cfg中添加了屬性。沒有關於刷新,所以我認爲它進入默認值。 –
你正在執行的命名查詢中有什麼? –