2017-06-20 16 views
0

Javaサービスでは、21/12/2012の変更日を持つジャーナル記事を作成する必要があります。ここでaddArticleさんのJavaDocです:Liferay setModifiedDateはデータベースのmodifiedDateに影響しません

* @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コールが最後の変更と見なされることはありますか?それを回避するには?

+0

これは非常に詳細な質問ですので、https://github.com/liferay/com-liferay-journal/blob/master/journal-service/src/main/javaの実装をご覧ください。 /com/liferay/journal/service/impl/JournalArticleLocalServiceImpl.java(バージョンのタグを選択) –

答えて

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を呼び出すと、そのデータがデータベースに格納されます。

2

この試してみてください:あなたはJournalArticleLocalServiceUtil.addJournalArticle(journalArticle)メソッドを使用することができます

ていますが、手動でjournalArticleオブジェクトを作成する必要があります:

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); 

別の方法を

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でも動作します。

+0

パフォーマンス上の理由(膨大な量のコンテンツを移行する)のために、私は第2のLiferay /データベース呼び出しを本当に好むでしょう。しかし、私はこれを使用する他の解決策がない場合は、ありがとう! –

+0

私は答えを編集し、あなたのために今より良いかどうかを確認します。 BtwまだDBへの2つの呼び出しがあります:( –

+0

マイナーノート:2番目のコードリストでは、 'setModifiedDate'コールを追加することもできますか?それは簡単ですが、結局のところ、^_^ –

関連する問題