mast
I'm new here

Entity Manipulation via dataSet springt immer zum letzten committeten Objekt

Jump to solution

Hallo Zusammen.

Ich habe noch einmal ein Problem mit der Entity Manipulation innerhalb von Datenquellen.

Folgender Sachverhalt:

- Datenquelle downloadItem, enthält Items die unter anderem einem bestimmten Dokumententypus zugeordnet werden können.

- Die verschiedenen Optionen liegen in einer weiteren Datenquellen und sind m:n zu verknüpft.

- Der Redakteur kann in einer database FS_LISTE mehrere Typen auswählen.

Diesen Prozess versuche ich aktuell in einem Modul zu automatisieren.

CodeSnippet:

Loop:

downloadItemEntity = downloadItemSession.createEntity(downloadItemEntityType);

dataset = downloadItemDatasource.getDataset(downloadItemEntity);

formData = dataset.getFormData();

fsListFormField = formData.get(project.getLanguage("DE"), "tt_item_doctype");

FormDataList fdl = (FormDataList) fsListFormField.get();

ContentFormsProducer producer = (ContentFormsProducer) fdl.getProducer();

// Dieser Block wird später noch sauber dynamisch ausgelagert

Select selectDocType = docTypeSession.createSelect(docTypeDataSource.getEntityType().getName());

Equal equalDocType = new Equal("fs_id", 2306);

selectDocType.setConstraint(equalDocType);

EntityList resultListDocType = docTypeSession.executeQuery(selectDocType);

IdProvidingFormData idpfd = (IdProvidingFormData) producer.create(resultListDocType.get(0));

fdl.add(idpfd);

fsListFormField.set(fdl);

dataset.setFormData(formData);

dataset.save();

downloadItemSession.commit();

Dieser Codesnippet wird bei jedem Element durchlaufen, das ich neu hinzufügen und mit einem oder mehreren Dokumententypen verknüpfen möchte. Der Vorgang klappt soweit auch. Es entsteht am Ende des Commits ein neuer Datenquelleneintrag, allerdings enthält immer nur der letztaktuelle Eintrag auch die (korrekte) Verknüpfung. Starte ich das Modul erneut via Kontextmenü, dann werden wieder Einträge angelegt, aber dann verschwindet die Verknüpfung sogar von dem bereits angelegten Eintrag und wandert wieder zum letztaktuellen.

Ich habe schon versucht die docTypeSession zu committen, die sessions zu closen, zu refreshen. Irgendwas scheine ich zu übersehen?

Kann hier vielleicht jemand weiterhelfen?

Viele Grüße und Danke vorab,

Markus Stroh

P.S.

FS 5.1.418

0 Kudos
1 Solution

Accepted Solutions

Hallo Andreas,

Danke für deine Rückmeldung, daran lag es leider nicht. Der Grund war leider so banal, dass ich das gar nicht überprüft hatte.... es werden insgesamt 3 weitere Datenquellen verwendet und genau die Erste davon, mit der ich mich beschäftigt hatte, war falsch angelegt.

Statt einer m:n Verknüpfung, war es 1:n, entsprechend konnte es keine zwei Elemente mit identischem Eintrag geben und der Listeneintrag ist immer wieder zum aktuellsten "gesprungen".

Immerhin klappt jetzt alles wie geplant.

Grüße,

Markus

View solution in original post

0 Kudos
2 Replies
aVogt
Returning Creator

Hallo Markus,

ganz grober Verdacht:

Es könnte sein, dass Du die angelegte Entity erst mal speichern musst, ehe Du das FormData holst. Also nach dem ...createEntity ... ein commit absetzen.

Grüße

Andeas

0 Kudos

Hallo Andreas,

Danke für deine Rückmeldung, daran lag es leider nicht. Der Grund war leider so banal, dass ich das gar nicht überprüft hatte.... es werden insgesamt 3 weitere Datenquellen verwendet und genau die Erste davon, mit der ich mich beschäftigt hatte, war falsch angelegt.

Statt einer m:n Verknüpfung, war es 1:n, entsprechend konnte es keine zwei Elemente mit identischem Eintrag geben und der Listeneintrag ist immer wieder zum aktuellsten "gesprungen".

Immerhin klappt jetzt alles wie geplant.

Grüße,

Markus

0 Kudos