У меня есть три таблицы, то есть Order, Item и ItemValues с Order и Item как отношения один ко многим аналогично значениям item и item. В пользовательском интерфейсе элемент - это имя поля, а значения элемента - это раскрывающиеся списки имени этого поля.
Таблица заказа
id
1
2
3
Таблица позиций
Name id orderid
ExamCategory 1 1
Exam 2 1
Stage 3 1
Таблица значений позиций
Name level parentLevel itemId
Banking 1 0 1
Army 2 0 1
Navy 3 0 1
SBI PO 1 1 2
HDFC PO 2 1 2
Preliminary 1 1 3
Подводя итог, есть три поля: Категория экзамена, экзамен и этап с Банковское дело, Армия и Флот - это выпадающие значения для Категории экзамена. Уровень соответствует порядку, в котором они появляются, а родительский уровень означает, что это самые верхние раскрывающиеся значения полей.
Мне нужно получить данные из базы данных с помощью собственного запроса Spring, так что если я выбрал категорию экзамена как Банковское дело в первом поле все дочерние поля должны отображать только связанные с ним раскрывающиеся значения. (например, банковское дело для экзаменационной категории, SBI PO, HDF C PO для экзамена, и если я выбрал SBI PO, тогда только предварительный этап, как это, он может go on). Поскольку это может быть огромное json, при каждом щелчке мне нужно вызывать db и получать только соответствующие данные.
Я пытаюсь получить данные на основе orderId, itemlevel и itemValueLevel. Мне нужно получить все элементы, которые превышают текущий уровень, и все значения элементов, которые имеют текущее значение itemValue как parentLevel (с этой частью я изо всех сил пытаюсь справиться как сравнение itemValue и parentLevel, которое я могу сделать только для следующего поля. После что мне нужно использовать значения первых полученных результатов для определения следующей строки). Как я могу добиться этого динамически. SQL запрос тоже подойдет. Любая помощь приветствуется. Приносим извинения за длинное объяснение, поскольку я борюсь с тем, как идеально представить проблему, с которой я столкнулся.
itemEntity = entityManager
.createQuery(
"select i from Item i left outer join fetch i.ItemValues iv "
+ "where i.orderId = :orderId and i.level> : reqLevel and iv.parentLevel = :parentLevel",Item.class)