Spring CrudRepository findByInventoryIds (List inventoryIdList) - эквивалент в предложении



в Spring CrudRepository, есть ли у нас поддержка "в предложении" для поля? т. е. что-то подобное?



 findByInventoryIds(List<Long> inventoryIdList) 


если такая поддержка недоступна, какие элегантные варианты можно рассмотреть? Запуск запросов для каждого идентификатора может быть не оптимальным.

676   3  

3 ответов:

findByInventoryIdIn(List<Long> inventoryIdList) следует сделать трюк.

формат параметра HTTP-запроса будет выглядеть так:

Yes ?id=1,2,3
No  ?id=1&id=2&id=3

полный список ключевых слов репозитория JPA можно найти в список текущей документации. Это показывает, что IsIn эквивалентно-если вы предпочитаете глагол для удобочитаемости – и что JPA также поддерживает NotIn и IsNotIn.

для любого метода в Spring CrudRepository вы должны быть в состоянии указать @Query самостоятельно. Что-то вроде этого должно работать:

@Query( "select o from MyObject o where inventoryId in :ids" )
List<MyObject> findByInventoryIds(@Param("ids") List<Long> inventoryIdList);

Да, что поддерживаются.

Регистрация документации, представленной здесь для поддерживаемых ключевых слов в имени метода.

вы можете просто определить метод в интерфейсе хранилища без использования @Query аннотация и написание пользовательского запроса. В вашем случае это будет так:

List<Inventory> findByIdIn(List<Long> ids);

Я полагаю, что у вас есть инвентаризации сущность и InventoryRepository интерфейс. Код в вашем случае должен выглядеть так:

Сущности

@Entity
public class Inventory implements Serializable {

  private static final long serialVersionUID = 1L;

  private Long id;

  // other fields
  // getters/setters

}

Хранилище

@Repository
@Transactional
public interface InventoryRepository extends PagingAndSortingRepository<Inventory, Long> {

  List<Inventory> findByIdIn(List<Long> ids);

}

Comments

    Ничего не найдено.