Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Gemfire为@Cacable方法引发空指针空结果_Java_Jakarta Ee_Spring Data_Gemfire_Spring Data Gemfire - Fatal编程技术网

Java Gemfire为@Cacable方法引发空指针空结果

Java Gemfire为@Cacable方法引发空指针空结果,java,jakarta-ee,spring-data,gemfire,spring-data-gemfire,Java,Jakarta Ee,Spring Data,Gemfire,Spring Data Gemfire,我有一个注释为@Cacheable的方法,Gemfire也配置为缓存。该方法在返回非空值时工作良好。但如果返回Null,则Gemfire抛出异常,如下所示: 原因:java.lang.NullPointerException:值不能为null gemstone.gemfire.internal.cache.LocalRegion.newUpdateEntryEvent(LocalRegion.java:1744) 位于com.gemstone.gemfire.internal.cache.Lo

我有一个注释为@Cacheable的方法,Gemfire也配置为缓存。该方法在返回非空值时工作良好。但如果返回Null,则Gemfire抛出异常,如下所示:

原因:java.lang.NullPointerException:值不能为null
gemstone.gemfire.internal.cache.LocalRegion.newUpdateEntryEvent(LocalRegion.java:1744)
位于com.gemstone.gemfire.internal.cache.LocalRegion.put(LocalRegion.java:1705)
位于com.gemstone.gemfire.internal.cache.AbstractRegion.put(AbstractRegion.java:286)
位于org.springframework.data.gemfire.support.GemfireCache.put(GemfireCache.java:68)

方法如下:

@Override
@Cachable("date_cache")     
public String getData(String value){
   return myDataRepository.getLabelByValue(value);
}
若myDataRepository.getLabelByValue(value)为null,则会在Gemfire中抛出NullPointerException,并且从数据库中检索到一些数据,这样它就可以正常工作


如果Gemfire中存在任何忽略空值缓存的配置,请提供帮助。

在查看Gemfire的源代码时,没有任何方法(例如Gemfire分布式配置系统属性)可以避免NPE

1744:if(值==null){ 1745:抛出新的NullPointerException(LocalizedStrings 1746:.LocalRegion_值_不能为空。toLocalizedString()); 1747:}

很抱歉,很遗憾,您的数据存储库必须返回非空值。这甚至适用于GemFire8(新版本)


短期内,您可以通过扩展Spring Data GemFire的.getCache()方法来绕过此限制,以返回一个包装版本,该版本在put(key,value)时丢弃空值,这是一项额外的工作,或者等待。

我已经完成了SGF-327,而避免GemFire对缓存区域中的空值进行限制的改进将是SDG 1.4.5、1.5.1和下一版本(1.6或2.0)的一部分,有待决定。