我會具體,我可以,所以我想只是問了痘痘的幫助,這hml.xml文件修改如何修改休眠的hbm.xml擺脫 - org.hibernate.TransientObjectException:對象引用一個未保存的瞬態的實例
我有這個文件在我的Hibernate映射
<hibernate-mapping>
<class name="sk.bantip.hotel.server.dao.book.Dealer" table="book_dealer">
<id column="idBook_dealer" name="id" type="java.lang.Long">
<generator class="identity" />
</id>
<many-to-one name="domain" column="idMain_domain"
not-null="true" class="sk.bantip.hotel.server.dao.main.Domain" />
<many-to-one name="activeData" column="idBook_dealerData"
class="sk.bantip.hotel.server.dao.book.DealerData" />
<set name="historyData" inverse="true">
<key column="idBook_dealer" />
<one-to-many class="sk.bantip.hotel.server.dao.book.DealerData" />
</set>
<property name="status" not-null="false" />
</class>
,這是協會:
<hibernate-mapping>
<class name="sk.bantip.hotel.server.dao.book.DealerData" table="book_dealerData">
<id column="idBook_dealerData" name="id" type="java.lang.Long">
<generator class="identity" />
</id>
<property name="name" not-null="true"/>
<property name="registration" not-null="true"/>
<property name="taxNumber" not-null="true"/>
<property name="timestamp" not-null="true" />
<property name="authorUserId" column="idAuthor" not-null="true" />
<many-to-one name="dealer" column="idBook_dealer"
not-null="true" class="sk.bantip.hotel.server.dao.book.Dealer" />
<property name="channel" not-null="false">
<type name="sk.bantip.core.enums.GenericEnumUserType">
<param name="enumClass">sk.bantip.hotel.server.dao.book.Channel</param>
<param name="identifierMethod">getValue</param>
<param name="valueOfMethod">getByCode</param>
</type>
</property>
<property name="street" not-null="false" />
<property name="number" not-null="false" />
<property name="zip" not-null="false" />
<property name="city" not-null="false" />
<property name="country" not-null="false" />
<property name="telephone" not-null="false" />
<property name="email" not-null="false" />
</class>
我發現它說使用級聯操作一些導遊,當我得到
org.hibernate.TransientObjectException:對象引用一個未保存的瞬態的實例 - 沖洗之前保存的瞬態的實例:
但不知道哪個用途,我知道cascade =「all」,但我不知道是否會在這種情況下工作, 我使用此方法保存/更新:
public void ajaxNameListener(AjaxBehaviorEvent event) {
for(DealerListView diler : dealerList) {
if(diler.getDealerId() == getSelectedDealerId()) {
diler.setDealerId(selectedDealerId);
DealerData dilerko = new DealerData();
dilerko.setName(selectedDealerName);
Dealer dealer = BeanFactory
.getHotelDAOService(Dealer.class)
.findOne(selectedDealerId);
dealer.setActiveData(dilerko);
BeanFactory.getHotelDAOService(Dealer.class).update(dealer);// line 220 - in stacktrace is (at sk.bantip.hotel.web.controller.SalesController.ajaxNameListener(SalesController.java:220))
}
}
}
能有人爲給我基於這種情況建議?我覺得有些改變必須在這些hbm.xml文件中提出,一些級聯操作,但不知道這將是,請離開我一些後,我會很高興的任何幫助 謝謝你,有一個愉快的一天。
編輯:和在子類DealerData我有一個私人屬性,不確定的,但也許將需要在DealerData.hbm.xml中添加此屬性access="field"
?因爲這允許Hibernate讀取來自私有變量,而不是公共屬性的值。
感謝後,嗯在這個DAOService我只是一些保存,saveOrUpdate,更新方法,我不寫DAOService方法我只是用這個保存到數據庫,我試着用相同的堆棧跟蹤所有這種方法。 – ViliDuarte1 2013-03-06 10:38:41