Yuuvis search mit Integer-Werten nicht möglich

Hallo zusammen,

ich habe aktuell folgendes Problem mit der enaioRedSearch, auf meinem Objekt gibt es ein Feld vom Typ Integer, welches ich gerne abrufen würden.

Zwei Möglichkeiten habe ich probiert, beide haben leider nicht funktioniert.

  1. Wert im Schema als String festlegen, dabei kommt folgende Fehlermeldung:
Exception in component enaioRedSearch_1 (A_Import_Produkt_Fachhandel_KIS_20230815)
java.lang.ClassCastException: class java.lang.Integer cannot be cast to class java.lang.String (java.lang.Integer and java.lang.String are in module java.base of loader 'bootstrap')
	at ch.ecmind.talend.enaio.redline.client.search.SearchResultRecord.getString(SearchResultRecord.java:19)
	at local_project.a_import_produkt_fachhandel_kis_20230815_0_1.A_Import_Produkt_Fachhandel_KIS_20230815.enaioRedSearch_1Process(A_Import_Produkt_Fachhandel_KIS_20230815.java:997)
	at local_project.a_import_produkt_fachhandel_kis_20230815_0_1.A_Import_Produkt_Fachhandel_KIS_20230815.runJobInTOS(A_Import_Produkt_Fachhandel_KIS_20230815.java:2724)
	at local_project.a_import_produkt_fachhandel_kis_20230815_0_1.A_Import_Produkt_Fachhandel_KIS_20230815.main(A_Import_Produkt_Fachhandel_KIS_20230815.java:2503)
2023-08-15 08:33:25 ERROR LOCAL_PROJECT.A_Import_Produkt_Fachhandel_KIS_20230815.enaioRedSearch_1 - java.lang.ClassCastException:class java.lang.Integer cannot be cast to class java.lang.String (java.lang.Integer and java.lang.String are in module java.base of loader 'bootstrap')
  1. Wert im Schema als Integer festlegen, dabei kommt folgende Fehlermeldung:

Was muss ich ändern, wenn ich mit der Suche ein Integer-Feld abrufen möchte?

Hier nochmal die Konfig der Search-Komponente, unten markiert das Integer-Feld aus yuuvis:

Viele Grüße
Jan

Guten Morgen Jan,

da scheint in der Talend Komponente leider ein fieser Bug drin zu sein den bisher keiner gemerkt hatte. Im Prinzip kannst du es sehr einfach selbst beheben wenn du möchtest. Dann musst du auf keinen Update warten.

In deinem Talend Komponenten Ordner müsste es einen Ordner enaioredsearch Ordner geben.
Darin befindet sich die Datei enaioRedSearch_main.javajet.

In dieser Datei müsste es in Zeile ± 48 folgendes stehen:

<%=outConn.getName()%>.<%=column.get("SCHEMA_COLUMN")%> = <%=cid%>_record.getIntegerValue(<%=column.get("FIELD")%>);

Hier müsste eigentlich statt <%=cid%>_record.getIntegerValue <%=cid%>_record.getInt stehen.

Also ausgeschrieben:

<%=outConn.getName()%>.<%=column.get("SCHEMA_COLUMN")%> = <%=cid%>_record.getInt(<%=column.get("FIELD")%>);

Verblüffend dass dieser Fehler bisher nicht aufgefallen ist.
Danach entweder Talend ganz neu starten oder Ctrl + Shift + F3 drücken um die Komponenten zu aktualisieren.

1 „Gefällt mir“

Das klappt, besten Dank für die super schnelle Lösung!
Wollte das Feld schon doppelt als String anlegen, aber du warst schneller :wink:

1 „Gefällt mir“

Sehr schön und sorry. Leider ein klassischer Typo von mir.

Hi Uli,

kurzer Nachtrag dazu. Bei Decimal gibt es auch noch einen Fehler.
In Zeile 54 steht id_DOUBLE, es muss id_Double heißen sonst erkennt er es nicht.

Hatte es kurz mit Float probiert, aber da gibt er den Fehler aus, dass Double nicht so Float konvertiert werden kann, das OR scheint hier also auch nicht zu passen.

Beste Grüße
Jan