在休眠中,我得到一个异常
java.lang.UnsupportedOperationException:无法写入只读对象 在org.hibernate.cache.ReadOnlyCache.lock(ReadOnlyCache.java:42) 在org.hibernate.action.CollectionAction.beforeExecutions(CollectionAction.java:110)
虽然,我知道当我将缓存使用设置为“只读”但在我的hibernate映射中我没有指定缓存时会发生这种情况。而且,我使用的是一对多关系,即“读写”。但是,我真的不知道为什么我会得到这个例外。
BookingRecord表的映射
<hibernate-mapping>
<class name="com.acv.dao.tracking.BookingRecord" table="BOOKING" batch-size="10">
<id name="id"
column="ID"
unsaved-value="null">
<generator class="sequence"/>
</id>
<property name="userId" column="USER_ID" length="100"/>
<property name="bookingEmail" column="BOOKING_EMAIL" length="100"/>
<property name="bookingNumber" column="BOOKING_NUMBER" length="100"/>
<property name="agencyId" column="AGENCY_ID" length="100"/>
<property name="customerId" column="CUSTOMER_ID" length="100"/>
<property name="sessionId" column="SESSION_ID" length="100"/>
<property name="bookingChannel" column="BOOKING_CHANNEL" length="100"/>
<property name="creationDate" column="CREATION_DATE" length="100"/>
<property name="source" column="SOURCE" length="100"/>
<property name="xmlResponse" column="XML_RESPONSE" type="text" />
<set name="bookingServices" table="BOOKING_SERVICE" inverse="true" cascade="all-delete-orphan" lazy="false">
<cache usage="read-write"/>
<key column="BOOKING_ID" on-delete="cascade"/>
<one-to-many class="com.acv.dao.tracking.BookingServiceRecord"/>
</set>
</class>
</hibernate-mapping>
BookingServiceRecord表的映射
<hibernate-mapping>
<class name="com.acv.dao.tracking.BookingServiceRecord"
table="BOOKING_SERVICE"
lazy="false">
<cache usage="read-write"/>
<id name="id" column="ID" unsaved-value="null">
<generator class="sequence">
<param name="sequence">
<![CDATA[ACV_WEB.BOOKING_SERVICE_SEQ]]>
</param>
</generator>
</id>
<property name="productCode" column="PRODUCT_CODE" />
<property name="destinationCode" column="DESTINATION_CODE" />
<property name="supplierCode" column="SUPPLIER_CODE" />
<property name="serviceCode" column="SERVICE_CODE" />
<property name="serviceTypeString" column="SERVICE_TYPE"/>
<property name="price" column="PRICE" />
<property name="taxes" column="TAXES" />
<property name="serviceParentId" column="SERVICE_PARENT_ID" />
<property name="serviceId" column="SERVICE_ID" />
<many-to-one name="booking" class="com.acv.dao.tracking.BookingRecord" column="BOOKING_ID"/>
</class>
</hibernate-mapping>
我正在使用Hibernate Template getHibernateTemplate.saveOrUpdate(bookingRecord); getHibernateTemplate()平齐();
当我刷新模板时会抛出它 为什么会这样?是什么原因?