我正在使用Spring3.2和JPA与Hibernate4.2.1 Final
我的一个实体代码如下:
@Entity
@Table(name = "BOOLEAN_VALUES")
@Cache(region = "booleanValues", usage = CacheConcurrencyStrategy.READ_ONLY)
public class BooleanValue {
@Column(name = "NAME")
@NotEmpty
private String name;
public void setName(String name) {
this.name = name;
}
public String getName() {
return this.name;
}
}
我们希望缓存此类实体,因为它们的值永远不会被更改。在应用程序启动之前,这些值将插入表中。这些表看起来像字典值表。
我的ehcache.xml如下:
<cache name="booleanValues"
eternal="false" maxElementsInMemory="10000"
maxElementsOnDisk="1000"
overflowToDisk="true"
diskSpoolBufferSizeMB="20"
timeToIdleSeconds="3000"
timeToLiveSeconds="6000"
memoryStoreEvictionPolicy="LFU" />
但每次启动我的应用程序时,都会显示以下警告,我的配置是否有任何问题?如何将这些实体设置为不可变?
2013-08-21 09:36:18,983 - org.hibernate.cache.ehcache.internal.strategy.EhcacheAccessStrategyFactoryImpl -2921 [localhost-startStop-1] WARN - HHH020007: read-only cache configured for mutable entity [booleanValues]
答案 0 :(得分:8)
使用@Entity
注释@org.hibernate.annotations.Immutable
。
@Entity
@Immutable
@Table(name="BOOLEAN_VALUES")
@Cache(region="booleanValues", usage=CacheConcurrencyStrategy.READ_ONLY)
public class BooleanValue {
...
}