Liferay setModifiedDate不会影响数据库的modifiedDate

时间:2017-06-20 09:28:04

标签: liferay liferay-7

我需要在Java服务中创建一个带有21/12/2012修改日期的期刊文章。这是addArticle的JavaDoc:

 * @param  serviceContext the service context to be applied. Can set the
 *         [...], modification date, [...]
 *         for the web content article.

这是我的尝试:

Date date = new SimpleDateFormat("dd/MM/yyyy").parse("21/12/2012");
serviceContext.setModifiedDate(date);

// Add article.
JournalArticleLocalServiceUtil.addArticle(
    userId, groupId, folderId, titleMap, descriptionMap,
    xmlContent, structureKey, templateKey, serviceContext);

问题:在数据库中,创建的JournalArticle行modifiedDate是今天的日期。

我做错了什么?
也许addArticle电话被认为是最后一次修改?如何解决这个问题?

2 个答案:

答案 0 :(得分:2)

试试这个:

Date date = new SimpleDateFormat("dd/MM/yyyy").parse("21/12/2012");

// Add article.
JournalArticle article = JournalArticleLocalServiceUtil.addArticle(
    userId, groupId, folderId, titleMap, descriptionMap,
    xmlContent, structureKey, templateKey, serviceContext);

article.setModifiedDate(date);

JournalArticleLocalServiceUtil.updateJournalArticle(article);

另一种方式:

您可以使用JournalArticleLocalServiceUtil.addJournalArticle(journalArticle)方法,但必须手动创建journalArticle对象:

long primaryKey = CounterLocalServiceUtil.increment(JournalArticle.class.getName());
JournalArticle journalArticle = JournalArticleLocalServiceUtil.createJournalArticle(primaryKey);

//Set all the journal properties you need...
journalArticle.setGroupId(yourGroupId);
journalArticle.setUserId(yourUserId);
journalArticle.setStructureId(ddmStructureKey);
journalArticle.setTemplateId(ddmTemplateKey);
...

JournalArticleLocalServiceUtil.addJournalArticle(journalArticle);

这与Liferay 7 API有关,但它也适用于6.2。

答案 1 :(得分:2)

您可以通过以下代码实现这一目标:

JournalArticle journalArticle =
     JournalArticleUtil.create(CounterLocalServiceUtil.increment());
Date now = new Date();
Date modifiedDate = new SimpleDateFormat("dd/MM/yyyy").parse("21/12/2012");

journalArticle.setUserId(userId);
journalArticle.setGroupId(groupId);
journalArticle.setFolderId(folderId);
journalArticle.setTitleMap(titleMap);
journalArticle.setDescriptionMap(descriptionMap);
journalArticle.setContent(xmlContent);
journalArticle.setStructureId(structureKey);
journalArticle.setTemplateId(templateKey);
journalArticle.setCreateDate(now);
journalArticle.setModifiedDate(modifiedDate);

JournalArticle updatedJournalArticle = JournalArticleUtil.update(journalArticle);

<强>理解:
1. JournalArticleUtil.create会返回JournalArticle级的新对象 2.根据您的要求设置属性(重点:setModifiedDate) 3.通过传递已填充的对象将其存储在数据库中来调用JournalArticleUtil.update