2

私は拡張JPAComponentPresentationDAOして実装する Tridion 2011 でストレージ拡張を作成しようとしていますComponentPresentationDAO

public void create(ComponentPresentation itemToCreate, ComponentPresentationTypeEnum componentPresentationType) throws StorageException 
{
    super.create(itemToCreate,componentPresentationType);   
    String tcmURI = Integer.toString(itemToCreate.getComponentId());
    Component compObject // I want Component object to get the schema ID 
    PublishActionDAO publishActionDAO = (PublishActionDAO) StorageManagerFactory.getDefaultDAO("PublishAction");
    PublishAction publishAction = new PublishAction();
    publishAction.setAction("ADD"); 
    publishAction.setTcmUri(tcmURI);
    publishActionDAO.store(publishAction);
}

上記のサンプル コードでは、コンポーネント ID を取得する場所を使用して Component オブジェクトをitemToCreate.getComponentId()作成し、そのデータをデータベース テーブルに格納するエンティティ クラスに有用な詳細を渡すことができるようにします。

4

1 に答える 1

6

ComponentMetaItemMeta から継承されたスキーマ ID を取得できます。ItemDAO最初にからを取得する必要がありStorageManagerFactory、次にfindByPrimaryKeyComponentMeta に渡します。super.createこれは、コンポーネントをブローカー db に永続化する必要がある場合にのみ機能します。これを試してみてください。

サンプル スニペット :

ItemDAO item = (ItemDAO) StorageManagerFactory.getDAO(pubid,StorageTypeMapping.COMPONENT_META);
ComponentMeta meta = (ComponentMeta) item.findByPrimaryKey(pubid,compid);
int schemaID = meta.getSchemaId() ;

注: itemToCreate tcmURI から pubid、compid を渡す必要があります。

于 2013-01-10T20:28:57.983 に答える