Hibernate抛出异常“无法写入只读对象”

时间:2014-12-24 15:19:38

标签: hibernate

在休眠中,我得到一个异常

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()平齐();

当我刷新模板时会抛出它 为什么会这样?是什么原因?

0 个答案:

没有答案