当前位置: 首页 > 知识库问答 >
问题:

为什么在使用CRUDEPository spring data dynamodb的findBy方法时会出现NullPointerException?

苏洛城
2023-03-14

我使用的是spring boot和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?

共有1个答案

阎志义
2023-03-14

这对我有用-

 类似资料:
  • 我想在RxJava中实现一个下载一些文件的处理队列。我想下载的文件数量可能高达100个左右。 一切都是在Android上使用RxJava 1.1.1开发的 我做错了什么?

  • 我有以下问题。 在一个类中,我声明: 有趣的是:currentVuln。Published.ToString()。这工作很好。 Published是声明为可空的日期时间属性,其方式如下: 问题是,在前面的方法中,currentVuln的打印值。Published.ToString()类似于18/07/2014 00:00:00(时间也包含在日期中)。 我只想显示日期,不想显示时间,所以我尝试使用类

  • 我已经调整了控制器构造函数和fxml,所以除了fxml构造和fxml加载之外,控制器的所有fxml设置都在fxml中。这里是我的控制器:

  • 我期望这段代码(在对细化类型使用模式匹配后调用匿名类的方法) 要打印 (以及未经检查的警告)。 我知道由于类型擦除,匹配总是成功的,但这不应该导致问题,因为的运行时类型(甚至考虑擦除)应该是

  • 问题内容: 当我运行以下代码时: 我得到一个异常说: 为什么会出现此异常? 编辑:tmpList是一个LinkedList,其每个节点都包含DepConfAttr类型的对象。 我正在基于内存(首先是最高内存)对tmpList进行排序,这是DepConfAttr对象的属性之一。 上面的代码反映了我要通过以下代码实现的目标 问题答案: 为什么会出现此异常? 您要遍历列表,而不是通过迭代器从列表中删除一

  • 为什么即使在Java中使用close()方法,也会出现“Resource leak:”错误? 我把整个代码和注释放在哪里,在哪里得到错误信息,在哪里关闭Scanner方法。 我使用Eclipse,Java13。 这是密码。 甚至当我投入的时候。close()在try块中,仍然显示相同的错误。 即使我把in.close()放在后面,它仍然显示同样的错误。 为什么会这样?