为什么我会得到“一个”呢;“为可变”配置的只读缓存;何时建立NHibernate会话工厂?

为什么我会得到“一个”呢;“为可变”配置的只读缓存;何时建立NHibernate会话工厂?,nhibernate,nhibernate-mapping,Nhibernate,Nhibernate Mapping,我设置了一个简单的模型:具有多个图像的文档实体。图像保存在另一个数据库中,并从其他遗留应用程序更新,因此我的应用程序只有只读访问权限。我设置了一个synonim,以便可以将另一台服务器上的images表用作本地表。 我的映射如下所示: <class name="Image" mutable="false" table="ImageExternal"> <cache region="images" usage="read-only" /> <id na

我设置了一个简单的模型:具有多个图像的文档实体。图像保存在另一个数据库中,并从其他遗留应用程序更新,因此我的应用程序只有只读访问权限。我设置了一个synonim,以便可以将另一台服务器上的images表用作本地表。 我的映射如下所示:

<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>

image类本身是可变的,但我可以通过将访问策略更改为受保护的字段来使其不可变。 我在图像映射上设置了mutable=“false”,它的所有属性都有update=“false”,父关系中设置的图像也被标记为mutable=“false”。
但是,在构建会话工厂时,我收到“为可变:图像配置只读缓存”警告,因为缓存使用是“只读”的

您正在为集合指定mutable=“false”和缓存。摆脱它。

那么我什么时候可以使用只读缓存?它不是mutable=“false”集合和只读缓存兼容吗?@Vasile,文档中没有。您可以在类映射中使用它,但不能在集合映射中使用它,因为它已经被定义了。