Мне нужно выбрать все строки, которые соответствуют параметру, или получить все из них, если он равен нулю
Я (не) нашел решение, читающее документацию Spring Data - Пример 21. Использование различных ограничений обнуляемости
Попробовал пример с использованием аннотации @Nullable
, но все еще не работает, вот код
// just a part of entity LotMaster
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "lot_master_gen")
@SequenceGenerator(name = "sq_lot_master_gen", sequenceName = "sq_lot_master", allocationSize = 1)
@Column(name = "lot_id")
private Long id;
//repository extends JpaRepository<LotMaster, Long>
@Nullable
Page<LotMaster> findAllById(@Nullable Long id, Pageable p);
Запрос:
SELECT
*
FROM
(
SELECT
lot0_.lot_id AS lot1_2_,
lot0_.qty AS qty_2_,
lot0_.version AS version8_2_,
lot0_.username AS username15_2_
FROM
lot_master lot0_
WHERE
lot0_.lot_id IS NULL
)
WHERE
ROWNUM <= ?
Как вы видите, он использует нулевое значение в качестве условия вместо игнорирования его
Pi c Документация
Как это возможно? Любая идея без CriteriaApi или использования @ Query Моя идея состоит в том, чтобы добавить еще несколько параметров и использовать производный запрос
Возможно, связанный DATAJPA-209
Я понимаю, что использование id в качестве примера сбивает с толку, извините за это. Однако, если я использую другое поле, такое как qty, у меня должна быть возможность поиска даже с нулем. В форме несколько полей, которые можно оставить empy. Было бы неплохо реализовать, например, @RequestParam
с обязательными параметрами или параметрами defaultValue или просто @Nullable
, работающие