6

Spring3.2 と JPA を Hibernate4.2.1 Final で使用しています

私のエンティティコードの1つは次のようなものです:

@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] 
4

1 に答える 1

12

で注釈を付け@Entityます@org.hibernate.annotations.Immutable

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

  ...

}
于 2014-02-28T21:05:49.337 に答える