ヘーゼルキャスト ベースのキャッシュ用にゼロ ボイラープレート マップ ストアを実装しようとしています (ここで説明されているように) が、データをマップに追加しても、データベースに保存されたデータを取得できません。
これは、hazelcast マップを定義する方法です。
<hz:map name="foo"
<hz:map-store enabled="true"
class-name="my.package.jpa.UserDataRepository"
write-delay-seconds="1"/>
</hz:map>
...
<bean id="cacheManager" class="com.hazelcast.spring.cache.HazelcastCacheManager">
<constructor-arg ref="user-provisioning-hazelcast"/>
</bean>
<bean id="userMappingCache" factory-bean="cacheManager" factory-method="getCache">
<constructor-arg><value>foo</value></constructor-arg>
</bean>
マップは機能しているようです (少なくともメモリ内では)。
my.package.jpa.UserDataRepository で CRUD インターフェイスを定義する方法
@Repository
public interface UserDataRepository extends JpaRepository<UserData, Long>,
JpaSpecificationExecutor<UserData> {}
そのインターフェース定義から作成された Beanのメソッドを使用するsave
と、オブジェクトのいずれかで、データがデータベースに保存されます (したがって、データベース接続、休止状態のプロパティ、エンティティ定義、および Bean 定義は問題ないようです)。
しかし、オブジェクトをマップに「配置」すると、hazelcast はそれらをデータベースに書き込むことはなく、文句を言うこともありません。map-store の定義が無視されているようです。
キーはJPAオブジェクトのidと同じです。
何が間違っているのか、またはデバッグ方法の手がかりをいただければ幸いです。
ヘーゼルキャスト2.6を使用。