Liferay setModifiedDate 不影响数据库的修改日期

Liferay setModifiedDate does not impact database's modifiedDate

我需要在 Java 服务中创建修改日期为 21/12/2012 的期刊文章。这是 addArticle 的 Java 文档:

 * @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 调用被认为是最后一次修改?如何解决这个问题?

试试这个:

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。

您可以通过以下代码实现:

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 将 return 你成为 JournalArticle class 的新对象。
2. 根据您的要求设置属性(重点:setModifiedDate)。
3. 通过传递填充对象调用 JournalArticleUtil.update 将其存储在数据库中。