Мне нужно обновить информацию о существующем пользователе в моей базе данных programmaticaly Мне нужно обновить значения даты рождения имени пользователя в таблице user_ в базе данных Liferay В основном мне нужно запустить запрос на обновление.Обновление информации о пользователе в базе данных liferay
ответ
update user_ set firstName="New First Name", lastName="New Last Name" where emailAddress="[email protected]";
update contact_ set birthday="date string" where contactId in(select contactId from user_ where emailAddress="[email protected]");
По первому запросу обновления можно изменить ПгвЬЫат, LastName из пользователя и второго запросом вы можете изменить дату рождения пользователя.
Надеюсь, что это ясно!
Попробуйте этот код ..
Здесь я обновляя только пользователя Имя (остальное вы можете сделать по-своему)
идентификатор пользователя = Вы можете получить это с помощью дисплея темы
User user = UserLocalServiceUtil.getUser(userId);
user.setFirstName("new name");
UserLocalServiceUtil.updateUser(user);
Надеюсь, это поможет вам !!!
Это зависит от того, нужно ли это делать в коде портлета или путем отправки прямого запроса в db.
Liferay в основном кэширует все, поэтому, если вы обновляете запись в базе данных Liferay во время работы портала, скорее всего, запись уже находится в кеше, поэтому новые значения столбцов вообще не будут прочитаны. Вам нужно очистить кэш базы данных, перейдя в Панель управления -> Администрирование сервера.
Наоборот, если вы должны сделать такое в коде портлета, вы должны указать один из методов услуг Liferay. Вы пытаетесь обновить пользователя, поэтому вы должны вызвать метод UserLocalServiceUtil.updateUser
(или UserServiceUtil.updateUser
, если вы также хотите проверить разрешения). Вы можете видеть, что есть несколько методов updateUser
, один из которых имеет множество параметров, а другой имеет только компонент в качестве параметра. В то время как первый содержит всю бизнес-логику (валидация, переиндексирование, обновление связанных объектов и т. Д.), Второй был просто автогенерирован и не должен использоваться (за исключением случаев, когда вы абсолютно точно знаете, что делаете). Таким образом, используйте метод с большим количеством параметров, просто передавая user.getCOLUMN()
(например, user.getFacebookId()
), если вы не хотите изменять значение этого столбца.
Надеется, что это помогает, и извините за мой плохой английский ...
Не рекомендуется обновить базу данных LifeRay напрямую, вы должны использовать Liferay API вместо того, чтобы делать эти вещи. В соответствии с this liferay forum post:
База данных Liferay не публикуется по какой-либо причине. Причина в том, что API делает значительно больше материалов, чем просто простые инструкции вставки SQL. Есть внутренние управляемые внешние ключи, есть вещи, которые обновляются не только в базе данных, но также в индексах, в jackrabbit и т. Д.
Поскольку все это управляется кодом, а не базой данных, любые обновления код изменит, как и когда база данных будет обновлена. Даже если это сработает для вас в версии 6.1 GA1, GA2 выйдет через пару недель, и база данных/код может снова измениться.
Использование только API - единственный способ гарантировать, что изменения выполнены правильно.
достаточно Ok проповедования и вернуться к вашей проблеме, вот несколько способов, которые вы можете сделать это:
- вы можете создать пользовательский портлет и использовать услуги Liferay и обновляете имя пользователя, дату рождения и т.д., используя
UserLocalServiceUtil.updateUser()
метод. - Или вы можете создать клиент веб-сервис на основе SOAP или JSON, чтобы обновить данные, которые назвали бы тот же метод
Или вы можете использовать Liferay's Beanshell tool, чтобы сделать это с помощью панели управления, следуя некоторые код для обновления пользователь (создан только для вас ASAP):
import com.liferay.portal.model.Company; import com.liferay.portal.model.Contact; import com.liferay.portal.model.ContactConstants; import com.liferay.portal.model.User; import com.liferay.portal.service.CompanyLocalServiceUtil; import com.liferay.portal.service.ContactLocalServiceUtil; import com.liferay.portal.service.UserLocalServiceUtil; import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; long companyId = 10135; // this would be different for you User user = UserLocalServiceUtil.getUserByEmailAddress(companyId, "[email protected]"); // Updating User's details user.setEmailAddress("[email protected]"); user.setFirstName("First Test"); user.setLastName("Last Test"); user.setScreenName("myTestScreenName"); UserLocalServiceUtil.updateUser(user, false); // Updating User's Birthday // December 12, 1912 int birthdayMonth = 11; int birthdayDay = 12; int birthdayYear = 1912; Calendar cal = new GregorianCalendar(); cal.set(birthdayYear, birthdayMonth, birthdayDay, 0, 0, 0); cal.set(Calendar.MILLISECOND, 0); Date birthday = cal.getTime(); System.out.println("Updated User: " + user + "\nBirthdate to be updated: " + birthday); long contactId = user.getContactId(); Contact contact = ContactLocalServiceUtil.getContact(contactId); if(contact == null) { contact = ContactLocalServiceUtil.createContact(contactId); Company company = CompanyLocalServiceUtil.getCompany(user.getCompanyId()); contact.setCompanyId(user.getCompanyId()); contact.setUserName(StringPool.BLANK); contact.setCreateDate(new Date()); contact.setAccountId(company.getAccountId()); contact.setParentContactId(ContactConstants.DEFAULT_PARENT_CONTACT_ID); } contact.setModifiedDate(new Date()); contact.setBirthday(birthday); ContactLocalServiceUtil.updateContact(contact, false); System.out.println("Users birthdate updated successfully");
контакт код построен с помощью исходного кода Liferay для
UserLocalServiceImpl#updateUser
метода
В случае, если вы задаетесь вопросом, что является боб оболочки и куда поместить этот код, здесь, где вы можете найти его в Liferay Панель управления Панель управления ->Сервер -> Администрирование сервера ->Script
Красивый подробный. Не знал, что с beanshell мы могли бы это сделать. Спасибо –
для beanshell, действительно спасибо. – asifaftab87
- 1. PHP обновление информации о пользователе
- 2. Обновление информации о пользователе
- 3. Обновление информации о пользователе
- 4. Обновление информации о пользователе в View Идентичность
- 5. Обновление информации о базе данных не работает
- 6. Обновление информации о пользователе в firebase
- 7. Обновление информации в базе данных
- 8. Обновление информации о пользователе не работает
- 9. Отображение информации о пользователе
- 10. Хранение информации о пользователе
- 11. Отображение информации о пользователе
- 12. Получение информации о пользователе
- 13. Проблема с ПОЛУЧИТЬ Liferay вход информации о пользователе
- 14. Хранение информации о пользователе Django
- 15. Обновление информации о клиентах в базе данных не работает
- 16. Обновление информации о базе данных при обновлении файла в PHP
- 17. Обновление информации о пользователе Информация на стороне клиента В ответ
- 18. Использование информации о пользователе Joomla
- 19. Реализация информации о пользователе OpenID
- 20. iOS - Сохранение информации о пользователе
- 21. asp.net отслеживание информации о пользователе
- 22. Drupal: получение информации о пользователе
- 23. Получение информации о пользователе GoogleDrive
- 24. Обновление информации о пользователе, не позволяя пользователю писать возможности
- 25. Сохранение информации о пользователе в cookie
- 26. Получение информации о пользователе одобренного в WCF
- 27. Получение информации о пользователе в App Insights
- 28. Обновление информации о базе данных MySQL с сайта PHP
- 29. Обновление информации о базе данных с помощью функции onClick
- 30. Получение информации о пользователе в DbContext
Кстати, вместо того, чтобы просто обновить БД (и так обходя каждый бизнес и проверки логики), можно также назвать 'UserServiceUtil.updateUser' м этад через веб-сервис SOAP или JSON ... –