2016-02-19 3 views
0

Выполняя эту документацию и образец https://docs.camunda.org/manual/7.3/real-life/how-to/#process-engine-custom-queries-custom-mybatis-queries, не могли бы вы объяснить, как мы можем выполнять вставки запросов? В примере для перечисления значений, которые они использовали ниже, метод. commandContext.getDbSqlSession(). SelectList ("selectTasksForRegion", region, 0, 100);Запросы пользовательских вставок Camunda

Однако commandContext.getDbSqlSession(). Insert - это защищенный метод, поэтому я не могу получить запрос на вставку из него. Оцените любые предложения.

ответ

1

У DbEntityManager есть метод insert . Вставка и обновление управляются DbSqlSession на основе getPersistantState DbEntity. Вам нужно предоставить только соответствующие соответствия, которые имеют с префиксом insert и update. Например, см. Встроенные объекты .

+0

Спасибо Себастьян. поэтому, учитывая, что у меня есть класс сущностей с именем propsEntity, если я вызываю следующий код, commandContext.getDbEntityManager.update (PropsEntity.class, "updatePropsEntity", реквизит); а затем в моем файле сопоставлений у меня есть обновить табличное имя $ {prefix}, будет ли оно правильным? – user2894296

+1

Это зависит, например, от [Task.xml] (https://github.com/camunda/camunda-bpm-platform/blob/master/engine/src/main/resources/org/camunda/bpm/engine/ impl/mapping/entity/Task.xml # L59-L103). Он имеет два оператора update 'updateTask' и' updateTaskSuspensionStateByParameters'. Первый из них автоматически вызывается DbSqlSession, если TaskEntity загрязнен на флеше. Второй из них явно вызван [TaskManager] (https://github.com/camunda/camunda-bpm-platform/blob/master/engine/src/main/java/org/camunda/bpm/engine/impl/ сохранение/сущность/TaskManager.java # L164-L191). –

0

в базовом объекте MyBatis SqlSession вы найдете то, что вам нужно. Вы просто должны перейти на один уровень глубже: commandContext.getDbSqlSession().getSqlSession()

Вся линия выглядит следующим образом:

commandContext.getDbSqlSession().getSqlSession().insert("insertStuff", stuff); 

С insertStuff быть имя пользовательского запроса и stuff быть объектом параметров для этого запроса.