Запрос Spring CrudRepository с несколькими условиями In

#java #spring-boot #spring-data-jpa #spring-data #amazon-dynamodb

#java #spring-загрузка #spring-data-jpa #spring-данные #amazon-dynamodb

Вопрос:

Я пытаюсь получить данные из таблицы dynamodb, используя Spring Data, фильтруя по двум полям с использованием ключевого слова In, но он всегда возвращает пустой результат.

У меня есть объект, подобный:

 @DynamoDBTable(tableName = "my-table")
public class MyEntity {
    @Id
    private MyTableKey id;

    private String saleDate;
    private Long sellerId;

    // Some other properties

    @DynamoDBHashKey
    public String getSaleDate() {
        return this.saleDate;
    }

    @DynamoDBRangeKey
    public Long getSellerId() {
        return this.sellerId;
    }
}
  

и мой интерфейс для репозитория является

 @EnableScan
@EnableScanCount
public interface MySalesRepository
        extends PagingAndSortingRepository<MyEntity, MyTableKey> {

    Page<MyEntity> findById (MyTableKey id, Pageable pageable);

    Page<MyEntity> findAllBySaleDateAndSellerIdIn (List<String> saleDate,
            List<Long> sellerId, Pageable pageable);
}

  

Я хочу получить элементы, которые имеют как SaleDate в списке SaleDate, так и sellerId в списке sellerId, но я получаю 0 результатов.

Как я могу получить нужные значения, используя And и в ключевых словах?

Ответ №1:

Попробуйте изменить это:

  Page<MyEntity> findAllBySaleDateAndSellerIdIn (List<String> saleDate,
        List<Long> sellerId, Pageable pageable);
  

к этому:

  Page<MyEntity> findBySaleDateInAndSellerIdIn (List<String> saleDate,
        List<Long> sellerId, Pageable pageable);
  

Комментарии:

1. Это сработало! Я не могу поверить, что это было так просто. Спасибо!