Я успешно смогу заполнить таблицу расширения моего хранилища с помощью моего настраиваемого развертывателя, теперь я вижу, что мои записи идут отлично, если пользователь публикует любая страница.Как получить идентификатор первичного ключа из таблицы с помощью Hibernate, чтобы обновить таблицу при повторной публикации страницы Tridion.
Теперь я хочу, чтобы обрабатывать Отмену публикации части, так что я написал на заказ странице undeployer, см примера код ниже:
@SuppressWarnings({ "rawtypes" })
public void process(TransportPackage data) throws ProcessingException
{
ProcessorInstructions instructions = data.getProcessorInstructions();
try
{
for (Iterator iterator = instructions.getArguments(); iterator.hasNext();)
{
Object argument = iterator.next();
if (argument instanceof PageKey)
{
PageKey pageKey = (PageKey)argument;
TCDURI pageMetaURI = new TCDURI(pageKey.getId().getPublicationId(), 1168231104576L, pageKey.getId().getItemId());
PageMeta pageMeta = this.pageMetaHome.findByPrimaryKey(pageMetaURI.getPublicationId(),
(int)pageMetaURI.getItemId());
if (pageMeta == null)
{
DeploymentHandler.undeploy(pageMetaURI);
}
else
{
PublishAction publishAction = new PublishAction();
publishAction.setAction("DEL");
long id = publishAction.getId();
PublishActionDAO publishActionDAO = (PublishActionDAO) StorageManagerFactory.getDefaultDAO("PublishAction");
publishAction = publishActionDAO.findByPrimaryKey(id);
if (publishAction == null)
{
log.debug("FindByPrimaryKey: cannot retrieve object with primary key:" + id);
}
else
{
publishAction = publishActionDAO.update(publishAction);
log.debug("SearchPageUndeployer Updated bean -" + publishAction);
}
}
}
}
}
catch (Exception e)
{
throw new ProcessingException("SearchPageUndeployer: Could not undeploy page", e);
}
super.process(data);
}
В коде выше вы можете увидеть, что я пытаюсь обновить новое расширение для хранения «PublishAction», однако, когда я пытаюсь извлечь идентификатор из таблицы, для записи которой я хочу изменить, я всегда получаю идентификатор как 0, так как я не могу получить идентификатор из таблицы.
Просьба указать, что необходимо реализовать в моем DAO, чтобы получить идентификатор из таблицы для записи, которую необходимо обновить.
Спасибо.
Привет, Даниэль, спасибо, что ответ! используя вышеприведенный запрос, мы можем получить несколько записей, как в моем случае, если пользователь опубликовал новую страницу, он добавит запись в таблицу с «ДОБАВИТЬ» в поле ACTION, и снова пользователь опубликует ту же страницу, что добавит «UPD» в поле ACTION в качестве новой записи и если пользователь не публикует одну и ту же страницу, в новой записи добавится новая запись с «DEL» в ACTION в качестве новой записи в таблице. Теперь в этом случае у меня будет несколько записей в таблице с одним и тем же номером tcmuri и идентификатором публикации, любые предложения по этому вопросу –
Привет. Если вам нужно несколько записей из таблицы, вы можете просто использовать executeQueryListResult вместо executeQuerySingleResult и убедиться, что ваш метод возвращает List. Затем вы можете просто пропустить их и выполнить свою бизнес-логику. –