2012-07-13 6 views
0

J'ai une question d'utilisation du cache, j'ai le mappage suivant. ST_CD est mappé deux fois à deux propriétés différentes pour une raison quelconque. Mise en veille prolongée est de lancerMise en cache non hibernate utilisation Startegy

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

J'ai l'utilisation du cache comme « lecture seule », donc je suppose que les mises à jour et insérer sont toujours fausses; pourquoi devrais-je dire explicitement 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> 

Répondre

0

Lorsque vous créez une entité en veille prolongée, devrait être prêt à utiliser un bean normal. Que vous mettiez en cache ou non, il n'est pas possible de mettre à jour la base de données à travers plusieurs propriétés. Vous devez donc utiliser 'insert = "false" update = "false" `sur l'une des propriétés.

0

Sa question dans la cartographie,

la même colonne (ST_CD) est utilisé dans deux propriétés

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

Mapping correcte serait quelque chose comme,

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

Oui, comme je l'ai dit, j'ai dû cartographier la même colonne deux fois, pour d'autres raisons. – JavaKB