了解Hibernate缓存使用策略

时间:2012-07-13 20:30:51

标签: hibernate hibernate-mapping

我有缓存使用问题,我有以下映射。出于任何原因,ST_CD被映射两次到2个不同的属性。 Hibernate正在抛出

org.hibernate.MappingException: Repeated column in mapping for entity: my.package.State column: ST_CD (should be mapped with insert="false" update="false")

我的缓存使用情况为“只读”,所以我猜插入和更新总是假的;我为什么要明确地说insert =“false”update =“false”?

<class mutable="false" name="my.package.State" table="STATE_TABLE">
    <cache usage="read-only" />
    <id name="id" column="ST_ID" type="long" />
    <property name="code" type="string" column="ST_CD" />
    <property name="stateAbbreviationCode" type="string" column="ST_CD"/>
    <!- Other properites -->
</class>

2 个答案:

答案 0 :(得分:0)

它在映射中的问题,

在最后两个属性中使用相同的列(ST_CD)

<property name="code" type="string" column="ST_CD" />    
<property name="stateAbbreviationCode" type="string" column="ST_CD"/> 

正确的映射就像是,

<property name="code" type="string" column="ST_CD" />    
<property name="stateAbbreviationCode" type="string" column="ST_ABBR_CD"/> 

答案 1 :(得分:0)

在hibernate中创建实体时,应准备好使用普通bean。无论您是否缓存,都无法通过多个属性更新数据库。所以你需要在其中一个属性上使用'insert =“false”update =“false”`。