2011-02-09 16 views
5

He establecido un modelo simple: entidad de documento con múltiples imágenes. Las imágenes se guardan en otra base de datos y se actualizan desde otra aplicación heredada, por lo que mi aplicación solo tiene acceso de solo lectura. Configuré un sinónimo para poder usar la tabla de imágenes en otro servidor como una tabla local. Mis asignaciones son las siguientes:¿Por qué obtengo el "caché de solo lectura configurado para mutable" al construir la fábrica de sesiones de NHibernate?

<class name="Image" mutable="false" table="ImageExternal"> 
    <cache region="images" usage="read-only" /> 
    <id name="Id"> 
     <generator class="assigned" /> 
    </id> 
    <property name="Name" update="false" /> 
    <!-- other properties --> 
</class> 
<class name="Document" table="Document">  
    <id name="Id"> 
     <generator class="guid.comb" /> 
    </id> 
    <!-- other properties --> 
    <set name="Images" mutable="false"> 
     <cache region="images" usage="read-only" /> 
     <key column="some_guid_column" />  
     <one-to-many class="Image" /> 
    </set> 
</class> 

La clase de imagen en sí es mutable, pero puede hacer que sea inmutable cambiando la estrategia de acceso a los campos protegidos. Establecí mutable = "false" en la asignación de la imagen, todas sus propiedades tienen update = "false" y las imágenes establecidas en la relación principal también están marcadas con mutable = "false". Sin embargo, cuando construyo la fábrica de sesiones obtengo la advertencia de "caché de solo lectura configurado para mutable: images" porque el uso de la caché es "de solo lectura".

Respuesta

2

Está especificando mutable = "false" y el caché para su conjunto. Deshazte de eso.

+0

Entonces, ¿cuándo puedo usar el caché de solo lectura? ¿No es mutable = colecciones "falsas" y cachés de solo lectura compatibles? – Vasea

+0

@Vasile, no según la documentación. Puede usarlo en su mapeo de clase, pero no en su mapeo de colección, como ya se ha definido. – Vadim

Cuestiones relacionadas