我正在尝试为基于 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> {}
当我使用save
从该接口定义创建的 bean 的方法时,在我的任何对象上,数据都会保存到数据库中(因此数据库连接、休眠属性、实体定义和 bean 定义似乎没问题)。
但是当我将对象“放入”地图时,hazelcast 从不将它们写入数据库并且它从不抱怨。地图商店的定义似乎被忽略了。
键与 JPA 对象的 id 相同。
任何可能出错或如何调试的线索将不胜感激。
使用榛树 2.6。