2013-08-21 4 views
3

Я использую 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] 

ответ

6

аннотировать @Entity с @org.hibernate.annotations.Immutable.

@Entity 
@Immutable 
@Table(name="BOOLEAN_VALUES") 
@Cache(region="booleanValues", usage=CacheConcurrencyStrategy.READ_ONLY) 
public class BooleanValue { 

    ... 

}