Fórumok

How to get classPK?

Mohamed Faisal, módosítva 10 év-val korábban

How to get classPK?

Junior Member Bejegyzések: 90 Csatlakozás dátuma: 2009.08.12. Legújabb bejegyzések
Hi,
I have created a custom workflow portlet for three level Approval, Flow is working fine.
am trying to add assent entry using following API:
AssetEntryLocalServiceUtil.updateEntry(AssetEntry.class.getName(), classPK, new Date(), new Date(), true);

getting following error:

com.liferay.portlet.asset.NoSuchEntryException: No AssetEntry exists with the key {classNameId=10080, classPK=10815}
at com.liferay.portlet.asset.service.persistence.AssetEntryPersistenceImpl.findByC_C(AssetEntryPersistenceImpl.java:2463)
at com.liferay.portlet.asset.service.impl.AssetEntryLocalServiceImpl.updateEntry(AssetEntryLocalServiceImpl.java:721)

my question is how to get classPK to get rid of the above error?

Regards,
Faisal
thumbnail
Bartlomiej Knabel, módosítva 10 év-val korábban

RE: How to get classPK?

Junior Member Bejegyzések: 76 Csatlakozás dátuma: 2011.01.30. Legújabb bejegyzések
did You try to use getPrimaryKey() method (each Liferay entity sholud have this method)
Mohamed Faisal, módosítva 10 év-val korábban

RE: How to get classPK?

Junior Member Bejegyzések: 90 Csatlakozás dátuma: 2009.08.12. Legújabb bejegyzések
Hi Bartlomiej,
Thank you for your reply, tried getPrimaryKey() but its not working.
Regards,
Faisal
thumbnail
Krzysztof Gołębiowski, módosítva 10 év-val korábban

RE: How to get classPK?

Liferay Master Bejegyzések: 549 Csatlakozás dátuma: 2011.06.25. Legújabb bejegyzések
Hello Mohamed,
I think you are calling wrong API method, eg. in JournalArticleLocalServiceImpl (line 2308) they use following AssetEntryLocalService method to create new assets:
public com.liferay.portlet.asset.model.AssetEntry updateEntry(long userId,
long groupId, java.lang.String className, long classPK,
java.lang.String classUuid, long classTypeId, long[] categoryIds,
java.lang.String[] tagNames, boolean visible, java.util.Date startDate,
java.util.Date endDate, java.util.Date publishDate,
java.util.Date expirationDate, java.lang.String mimeType,
java.lang.String title, java.lang.String description,
java.lang.String summary, java.lang.String url,
java.lang.String layoutUuid, int height, int width,
java.lang.Integer priority, boolean sync)
throws com.liferay.portal.kernel.exception.PortalException,
com.liferay.portal.kernel.exception.SystemException;


You can also check how they did it in Knowledge Base portlet - https://github.com/liferay/liferay-plugins/blob/master/portlets/knowledge-base-portlet/docroot/WEB-INF/src/com/liferay/knowledgebase/service/impl/KBArticleLocalServiceImpl.java, method updateKBArticleAsset.

Anyway, I'm wondering how did you test the workflow without adding an assets.

Regards,
KG
Siby Mathew, módosítva 10 év-val korábban

RE: How to get classPK?

Expert Bejegyzések: 268 Csatlakozás dátuma: 2011.03.04. Legújabb bejegyzések
Hi Mohammed,
If you use updateEntry() method, then that means you are going to update some entry which is already existing in the DB.
This also means you already have its primary key.
If you want to add a new entry, try the following:
- call createAssetEntry() passing the param as CounterLocalServiceUtil.increment(AssetEntry.class.getName);
- set your variables.
- call updateEntry() with the newly created Asset as param.

Thanks,
Siby Mathew
Mohamed Faisal, módosítva 10 év-val korábban

RE: How to get classPK?

Junior Member Bejegyzések: 90 Csatlakozás dátuma: 2009.08.12. Legújabb bejegyzések
Hi,
Thank you your replies. let me check.

Regards,
Faisal