2016-08-24 7 views

ответ

0

Дружественные URL сохраняются в LayoutFriendlyURL.friendlyURL в базе Liferay поэтому следующий запрос должен работать

UPDATE "yourdatabase"."LayoutFriendlyURL" SET "friendlyURL"="/newurl" WHERE "layoutFriendlyURLId"=12345; 

Вам также необходимо обновить таблицу макета соответственно, чтобы соответствовать новой дружественной URL.

+0

Одиночные кавычки недействительны для идентификаторов SQL. Вам нужно использовать двойные кавычки. –

+0

Я знаю. Вы также можете использовать ', но это специальный символ в редакторе SO, поэтому я изменил его на – steven35

+0

. Вы можете использовать эту страшную обратную сторону в отформатированном блоке кода. Но backtick также недействителен в стандартном SQL. Названия таблиц в Liferay никогда не требуют цитирования. Таким образом, вам не нужны обратные или двойные кавычки. Строковые константы ** do ** должны быть заключены в одинарные кавычки в SQL. '"/newurl "' является ссылкой на столбец (стандартный) SQL –

3

Хотя ответ @ steven35 может выполнить эту работу, вы попадаете в мой дом. На другом уровне вы делаете это правильно, если вы делаете это на панели управления или через API, и вы не должны думать о способе когда-либо пишите в базу данных Liferay. Это может работает на данный момент, но может также произойти непредвиденным образом - иногда после вашего обновления.

Было достаточно образцов для этого. Если вы изменяете данные во время работы Liferay, кеш не будет обновляться. Если эти значения также индексируются в индексе поиска, они не будут обновляться там, и случайные последующие использования могут не найти правильную страницу без переиндексации всего. Такое же значение может храниться где-то еще - или переведено. Многочисленные условия могут потерпеть неудачу - и всегда есть одно условие больше, чем вы ожидаете и обслуживаете. Это одно условие может сломать тебе шею.

Конечно, дружественное имя страницы может не попасть в самые сложные из этих случаев, но просто не привык писать в базу данных Liferay. Или, если вы это сделаете, не жалуйтесь на то, что будущие обновления не сработают или потребуют дополнительной работы, потому что база данных содержит значения, которые API не ожидал. Проблема в том, что во время следующего обновления (если вы это сделаете, скажем, через один год) вы уже давно забыли, что вы вручную изменили данные в базе данных и обвинили Liferay в проблемах во время обновления.

Изменение данных точно для чего предназначены пользовательский интерфейс и API.

+0

Это правильно – steven35