Activiti - HistoricTaskInstanceQuery, поиск по свойству переменной, которая является сущностью JPA
У меня есть задача с переменной, которая является сущностью JPA.
API HistoricTaskInstanceQuery предоставляет только поиск по самой сущности:
query.processVariableValueEquals("entity", entity);
Моя цель - поиск по атрибутам сущности, что-то вроде (псевдокод):
query.processVariableAttributeEquals("entity", "entity.subEntity.name", name)
Как мне этого добиться?
1 ответ
Решение
Там нет выхода из коробки, чтобы сделать это. Варианты для рассмотрения:
- Постобработка результирующего набора с использованием чего-то вроде итератора для генерации списка идентификаторов сущностей и последующего использования пользовательского запроса к таблицам сущностей. Это скорее сельскохозяйственный, но, вероятно, ваш самый быстрый маршрут.
- Создайте свой собственный пользовательский запрос MyBatis, используя описанный здесь подход: https://www.activiti.org/userguide/ и здесь: http://www.jorambarrez.be/blog/2014/01/17/execute-custom-sql-in-activiti/
Вариант 2, вероятно, лучший вариант для вас, но это немного больше работы.
Greg