aVogt
Returning Creator

KeyValue.add(...) liefert Fehler

Jump to solution

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.

0 Kudos
1 Solution

Accepted Solutions
Peter_Jodeleit
Crownpeak employee

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!

Peter

View solution in original post

0 Kudos
6 Replies
andre
I'm new here

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.

0 Kudos
Peter_Jodeleit
Crownpeak employee

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!

Peter
0 Kudos

Hallo,

auch ihnen ein frohes gesundes neue Jahr.

Ihr Code funktioniert .

Vielen Dank.

0 Kudos

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

0 Kudos

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!

0 Kudos