Search the FirstSpirit Knowledge Base
Hallo,
ich habe mir einen Importer für Datensätze geschrieben. Die werden in eine Datenquelle geschrieben.
Nach der Umsetllung auf FS4.2.219.38784 bekomme ich eine Fehlermeldung bei der Ermittlung einer Refernez auf einen anderen Datensatz einer anderen Datenquelle.
Von dem Datensatz auf den ich die Verlinkung setzen will, habe ich die Datensatz ID und die Datenquelle (die auf der Tabelle .
Um die Verlinkung zu ermitten, habe ich mir eine Methode geschrieben
Übergabewerte an die Methode:
DQ_Name = dq_produkte
formName = cs_NummerVersion
value = 62713
Auszug aus der Methode:
...
try{
ContentStoreRoot cs = (ContentStoreRoot) this.us.getStore(de.espirit.firstspirit.access.store.Store.Type.forName("CONTENTSTORE"), false);
Content2 cSource = (Content2) cs.getContent2ByName(DQ_Name);
EntityType entityType = null;
try{
entityType = (EntityType) cSource.getEntityType();
} catch (Exception et){
...
}
this.debug("gefundene Tabelle: " + entityType.toString());
Session session = cSource.getSchema().getSession();
try{
ListEditorValue editor = null;
editor = (ListEditorValue) importEntityData.get(formName).getEditor();
this.debug("gefundener editor: " + editor.toString());
} catch (Exception E){
...
}
this.debug("\tElement: " + value);
KeyValue kv = new KeyValue(entityType.getName());
this.debug("\tkv: " + kv);
kv.add(""+value);
this.debug("\tadd ok");
Entity dataset = (Entity) session.find(kv);
this.debug("\tdataset: " + dataset);
...
} catch (Exception E) {
this.debug("ERROR setMultiOptionColumn: " + E.getMessage());
...
}
Die Logausgaben (this.debug) ergeben folgendes:
gefundene Tabelle: Produkte
gefundener editor: de.espirit.firstspirit.client.access.editor.ListEditorValueImpl@4430e2
Element: 62713
kv: Entity type: Produkte ()
ERROR setMultiOptionColumn Message: null
Der Fehler tritt also bei
kv.add(""+value);
auf.
Aus dem Stackrtarce (siehe Anhang) werde ich auch nicht schlau.
"Unknown Source" klingt so, als ob er die Datenquelle nicht findet, die ist aber da.
Zumindest erst konnte ich sie über "referenznamen suchen" nicht finden (obwohl der Referenzname stimmte). Ich habe dann die DQ gelöscht (nun wird sie im JavaClient gefunden), aber mein Script liefert immer noch den Fehler.
Hat sich etwas gegenüber der Version 4.1 geändert? in 4.1 funktionierte das ohne Probleme.
Wenn das unter 4.1 noch funktioniert hat, sollten das an den Helpdesk als inkompatible Änderung kommuniziert werden.
Bis dahin versuchen Sie doch mal folgendes Code-Fragment:
KeyValue kv = new KeyValue(entityType.getName(), "" + value);
Entity dataset = (Entity) session.find(kv);
Oder noch kürzer:
Entity dataset = (Entity) session.find(entityType.getName(), "" + value);
Ein frohes neues Jahr!
das ist der komplette trace? steht nicht sowas wie UnsupportedOperationException davor bzw. der Exception-Typ
schauen sie sich mal diesen post an, das geht u.a. es auch im KeyValue, vielleicht hilft das
https://community.e-spirit.com/message/2353#2353
"Unknown Source" bedeutet einfach, hier kann die Zeilennummer im trace nicht ermittelt werden. Also kein Problem.
Wenn das unter 4.1 noch funktioniert hat, sollten das an den Helpdesk als inkompatible Änderung kommuniziert werden.
Bis dahin versuchen Sie doch mal folgendes Code-Fragment:
KeyValue kv = new KeyValue(entityType.getName(), "" + value);
Entity dataset = (Entity) session.find(kv);
Oder noch kürzer:
Entity dataset = (Entity) session.find(entityType.getName(), "" + value);
Ein frohes neues Jahr!
Hallo,
auch ihnen ein frohes gesundes neue Jahr.
Ihr Code funktioniert .
Vielen Dank.
Im JavaClient funktioniert diese Methode aber nicht, auch die alte nicht!
Wenn ich das als Methode in eine Klasse und dann in ein Modul packe, klappt das. Ich habe bei mir keine Unterschiede gefunden, die auf irgendetwas schliessen ...
Fehlermeldung siehe Anhang
ergänzt:
Ich glaub ich habs gefunden, aber was ist dann die Lösung?
de.espirit.or.Session cs_sess = contentSource.getSchema().getSession();
liefert im JavaClient:
de.espirit.or.impl.SessionImpl
Aus der Beanshell heraus (ich nehme an, das ist mit "JavaClient" gemeint) muss die Methode leicht anders angesprochen werden. Wenn ich mich nicht schwer vertue, müsste das wie folgt aussehen:
Entity dataset = (Entity) session.find(entityType.getName(), new Object[] {"" + value});
funktioniert. Danke!