java - 为什么在使用 CrudRepository spring-data-dynamodb 的 findBy 方法时出现 NullPointerException?
问题描述
我正在使用 spring boot 和 spring spring-data-dynamodb。从 dynamodb 获取数据时出现 NullPointerException。这是我的实体类
@DynamoDBTable(tableName = "table1")
public class MyEntity {
@Id
private EntId entId;
@DynamoDBHashKey(attributeName = "hash_key")
private String hashKey;
@DynamoDBRangeKey(attributeName = "sort_key")
private String sortKey;
@DynamoDBAttribute(attributeName = "col1")
private String col1;
@DynamoDBTypeConverted(converter = HashMapConverter.class)
@DynamoDBAttribute(attributeName = "map")
private Map<String, List<MetaObject>> metaData;
//getter and setter
}
元对象类
@Builder
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
public class MetaObject {
private Integer minProductId;
private Integer maxProductId;
private String giftId;
private String streakName;
}
这就是 DynamoDb 中的内容
{
"col1": "no name",
"hash_key": "123",
"sort_key": "NOVEMBER",
"map": "{
"123":[
{
"minProductId":1,
"maxProductId":3,
"streakName":"sun",
"giftId":"3"
},
{
"minProductId":4,
"maxProductId":10,
"streakName":"mon",
"giftId":"2"
}
]
}"
}
我估计地图有问题。请指导。我的存储库类,
@EnableScan
@Repository
public interface MyRepository extends CrudRepository<MyEntity, String> {
MyEntity findMyEntityByHashKeyAndSortKey(String hashKey, String sortKey);
MyEntity findMyEntityByEntId(MyEntityId MyEntityId);
}
我正在使用这个方法 findMyEntityByHashKeyAndSortKey 来获取数据,
异常日志
Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is java.lang.NullPointerException] with root cause
java.lang.NullPointerException: null
at org.socialsignin.spring.data.dynamodb.repository.support.DynamoDBEntityMetadataSupport.getPropertyNameForAccessorMethod(DynamoDBEntityMetadataSupport.java:346) ~[spring-data-dynamodb-5.1.0.jar:5.1.0]
at org.socialsignin.spring.data.dynamodb.repository.support.DynamoDBHashAndRangeKeyExtractingEntityMetadataImpl.getRangeKeyPropertyName(DynamoDBHashAndRangeKeyExtractingEntityMetadataImpl.java:76) ~[spring-data-dynamodb-5.1.0.jar:5.1.0]
at org.socialsignin.spring.data.dynamodb.repository.support.DynamoDBIdIsHashAndRangeKeyEntityInformationImpl.getRangeKeyPropertyName(DynamoDBIdIsHashAndRangeKeyEntityInformationImpl.java:89) ~[spring-data-dynamodb-5.1.0.jar:5.1.0]
at org.socialsignin.spring.data.dynamodb.repository.query.DynamoDBEntityWithHashAndRangeKeyCriteria.<init>(DynamoDBEntityWithHashAndRangeKeyCriteria.java:76) ~[spring-data-dynamodb-5.1.0.jar:5.1.0]
at org.socialsignin.spring.data.dynamodb.repository.query.AbstractDynamoDBQueryCreator.create(AbstractDynamoDBQueryCreator.java:71) ~[spring-data-dynamodb-5.1.0.jar:5.1.0]
at org.socialsignin.spring.data.dynamodb.repository.query.AbstractDynamoDBQueryCreator.create(AbstractDynamoDBQueryCreator.java:42) ~[spring-data-dynamodb-5.1.0.jar:5.1.0]
at org.springframework.data.repository.query.parser.AbstractQueryCreator.createCriteria(AbstractQueryCreator.java:119) ~[spring-data-commons-2.1.10.RELEASE.jar:2.1.10.RELEASE]
at org.springframework.data.repository.query.parser.AbstractQueryCreator.createQuery(AbstractQueryCreator.java:95) ~[spring-data-commons-2.1.10.RELEASE.jar:2.1.10.RELEASE]
at org.springframework.data.repository.query.parser.AbstractQueryCreator.createQuery(AbstractQueryCreator.java:81) ~[spring-data-commons-2.1.10.RELEASE.jar:2.1.10.RELEASE]
at org.socialsignin.spring.data.dynamodb.repository.query.PartTreeDynamoDBQuery.doCreateQuery(PartTreeDynamoDBQuery.java:56) ~[spring-data-dynamodb-5.1.0.jar:5.1.0]
at org.socialsignin.spring.data.dynamodb.repository.query.AbstractDynamoDBQuery.doCreateQueryWithPermissions(AbstractDynamoDBQuery.java:81) ~[spring-data-dynamodb-5.1.0.jar:5.1.0]
为什么会给出 NullPointerException?
解决方案
这对我有用-> 使用@DynamoDBHashKey 和@DynamoDBRangeKey 在实体类中注释散列键和范围键获取器。谢谢@Amit Naik
推荐阅读
- javascript - 获取当月的第一天和最后一天
- maven - Mule 4 : Mule 4 域项目可以用作其他 mule 应用程序的 Maven 父项目吗?
- arm - STM32 ST-LinkV2 st-flash1.6.1 无法上传 - Windows 10
- c - 我的 for 循环在我的代码中无法正常工作,它在第一个循环后一直停止?
- java - type 的构造函数不适用,因为此处无法访问正式的可变参数元素类型
- c# - 在多种文化下运行 NUnit 3 测试
- python - 在python中加载pickle的Nonetype对象
- node.js - NodeJS导入与文件夹同名的文件
- java - 在 Nifi logback 中创建自定义日志文件时出错
- python - “TypeError:只能连接列表(不是“int”)来列出“我该如何处理这个