Обновить данные из таблицы без перестроения проекта в adf 12c

Я создал веб-приложение fusion в adf 12c и использую базу данных 12c. После создания приложения я случайно удалил несколько строк в таблице, но не нажал кнопку фиксации. Удаленные строки не отображаются там, но присутствуют в базе данных (проверяются после обновления). Я хочу обновить данные из базы данных либо при обновлении/перезагрузке страницы, либо с помощью какой-либо командной кнопки. Как я могу это сделать, не перестраивая приложение.


person Ahmad Mirza    schedule 27.02.2019    source источник


Ответы (2)


Вот как реализовать откат для таблицы ADF?

  • Перейдите на панель Контроль данных.
  • Откройте модуль приложения, в котором находится View Object вашей привязанной RichTable.
  • Перейдите в папку Операция.
  • Перетащите операцию отката как командную кнопку ADF на свою страницу JSF.

это будет выглядеть так:

 <af:commandButton actionListener="#{bindings.Rollback.execute}" text="Rollback" disabled="#{!bindings.Rollback.enabled}" immediate="true" id="cb6">

Вы также можете сделать это на Java:

 appModule.getTransaction.rollback();

Эта операция отката отменит все изменения, внесенные в модуль приложения, и снова запросит базу данных для всех его объектов просмотра.

Подробнее читайте здесь: https://docs.oracle.com/cd/B14099_19/web.1012/b14022/oracle/jbo/ApplicationModule.html

Транзакция

С корневым модулем приложения связан объект Transaction, который обеспечивает контекст этой транзакции. Из любого (корневого или вложенного) модуля приложения пользователь может получить объект транзакции с помощью вызова getTransaction(). На самом деле getTransaction() сначала находит корневой модуль приложения, а затем возвращает из него объект транзакции.

Объект Transaction управляет подключением к базе данных и кешам Entity. Таким образом, изменения, сделанные через один объект просмотра, видны другим объектам просмотра, если все эти объекты просмотра являются родительскими элементами одного корневого модуля приложения. В отличие от этого, если два объекта просмотра являются родительскими двумя отдельными корневыми модулями приложения, то изменения, сделанные через объект просмотра, не будут видны второму объекту просмотра до тех пор, пока изменения не будут зафиксированы в базе данных через первый корневой модуль приложения, а второй ВО не будет выполнен. запрос (для извлечения самых последних данных из базы данных).

person Cedric    schedule 27.02.2019

Вам нужно выбрать операцию executeQuery для объекта View, который заполняет вашу таблицу, и поместить ее на свою страницу в виде кнопки. Нажатие кнопки повторно запросит вашу БД, чтобы получить оттуда данные.

person Shay Shmeltzer    schedule 05.03.2019