Search the FirstSpirit Knowledge Base
Hallo Zusammen
Ich versuche verweifelt eine Detailseite zu erstellen.
Das ist die Funktion:
<CMS_FUNCTION name="contentSelect" resultname="fr_jobData">
<CMS_PARAM name="schema" value="sfs_inserate_erecruiting" />
<CMS_VALUE_PARAM name="stellentyp" value="st_stellen_typ" />
<QUERY entityType="SFS_INSERATE_ERECRUITING">
<FILTERPARAM parameter="stellentyp" datatype="java.lang.String" />
<AND>
<LIKE attribute="stellentyp" parameter="stellentyp"/>
</AND>
<ORDERCRITERIA attribute="StellenId" descending="0" />
</QUERY>
</CMS_FUNCTION>
<a class="molecule-responsive-datalist-entry entry" href="$CMS_IF(!ss_jobDetailPage.isEmpty())$$CMS_REF(ss_jobDetailPage, contentId: item.Stellenid)$$CMS_END_IF$" $CMS_IF(#global.preview && #global.node.content2Params.isEmpty())$$CMS_VALUE(editorId(entity: item,view: "inserate"))$$CMS_END_IF$>
<CMS_FUNCTION name="contentSelect" resultname="fr_jobDataDetail">
<CMS_PARAM name="schema" value="sfs_inserate_erecruiting" />
<CMS_VALUE_PARAM name="stellenid" value="#row.Stellenid" />
<QUERY entityType="SFS_INSERATE_ERECRUITING">
<AND>
<FILTERPARAM parameter="stellenid" datatype="java.lang.String" />
<LIKE attribute="stellenid" parameter="stellenid"/>
</AND>
</QUERY>
</CMS_FUNCTION>
ERROR 23.05.2022 21:11:17.927{g-sec=1826467,g-node=1826016} (de.espirit.firstspirit.generate.SiteProduction): Error resolving reference - Error code: 8114, state: S0005
inside of: Template 'dynamic content' (id=1825374)
inside of: $CMS_TRIM(level:3)$ - at 88, 1
inside of: $CMS_IF( ! #global.preview )$ - at 232, 2
inside of: $CMS_VALUE(#global.page.body("main_content"))$ - at 236, 6
inside of: Template 'responsive_datalist' (id=1825373)
inside of: $CMS_IF( ! st_dataSource.isEmpty() && st_dataSource.toString() == "inserate" )$ - at 134, 1
inside of: $CMS_IF( ! fr_jobData.isEmpty() && fr_jobData.size() > 0 )$ - at 199, 8
inside of: $CMS_FOR( item, fr_jobData )$ - at 200, 15
inside of: $CMS_IF( #for.index <= 14 )$ - at 201, 17
inside of: $CMS_IF( ! ss_jobDetailPage.isEmpty() )$ - at 203, 76
inside of: $CMS_REF(ss_jobDetailPage, contentId:item.Stellenid)$ - at 203, 113
de.espirit.or.QueryException: Error code: 8114, state: S0005
Caused by: java.sql.SQLException: Error converting data type varchar to bigint.
Hallo Thomas,
zwei Dinge machen mich misstrauisch. Zum einen sortierst Du in der contentSelect Funktion nach der Spalte StellenId
<ORDERCRITERIA attribute="StellenId" descending="0" />
Du benutzt dann eine Spalte, deren Namen fast identisch ist, für die contentId des Links:
contentId:item.Stellenid
Tippfehler?
Wenn nicht, versuche ich es mal allgemein: Hier wird normalerweise ein Longwert erwartet (also eine Zahl). Die Fehlermeldung deutet darauf hin, dass es sich um eine Datenbank handelt, die nicht unter FirstSpirit Kontrolle steht (da die Datenbank einen Typ bigint erwartet, aber Varchar bekommt) {hier kann ich aber auch falsch liegen, da ich nicht ausschließen kann, dass abhängig von der eingesetzten Datenbank und deren Konfiguration FirstSpirit auch bigint Spalten als ID Spalten erzeugt}.
Du schreibst, dass die Spalte vom Typ integer ist. Welche Eingabekomponente ist darauf gemappt und welchen Typ hat die ID Spalte des darüber verlinkten Datensatzes? Was ergibt denn die Ausgabe von $CMS_VALUE(item.Stellenid.class)$? Ich vermute mal, dass das keine "nummerische" Klasse ist. Möglicherweise reicht es schon aus, den Rückgabewert in eine Zahl umzuwandeln.
Oder kurz gesagt - Du musst als contentId die Id übergeben, die (aus FirstSpirit Sicht) der [nummerische] Primary Key [Bestandteil] der Datenbanktabelle ist. Die Fehlermeldung deutet darauf hin, dass es in der Datenbank eine bigint Spalte ist (also eine Zahl), Du aber einen varchar Wert (also einen String) übergibst. Das kann (bei einer nicht unter FirstSpirit Kontrolle stehenden Datenbank) auch an so etwas banalem wie einer falschen Eingabekomponente (CMS_INPUT_TEXT oder CMS_INPUT_COMBOBOX anstatt CMS_INPUT_NUMBER) und der dann fehlenden Umwandlung in eine Zahl liegen.
Zum anderen sprichst Du von Detailseite und führst gleichzeitig eine contentSelect Funktion an - das könnte ein Missverständnis sein. Detailseite werden über Tabellenvorlagen erzeugt. Im Sitestore wird dann definiert, wieviele von welchen Datensätzen auf der entsprechenden Seite dargestellt werden sollen. ContentSelect Funktionen dienen normalerweise dazu, mehrere Datensätze einer Tabelle auf einer Seite zu erzeugen. Wobei es natürlich viele Anwendungsfälle gibt, in denen man auf einer Detailseite andere Datensätze per contentSelect Funktion ausgibt. Das wären dann aber Inhalte, die unabhängig von der Detailseite sind.
Wie gesagt - das kann alles korrekt und so gewünscht sein, zusammen mit den Aussagen "Ich versuche verzweifelt eine Detailseite zu erstellen" und "Aber die Jobseiten werden einfach nicht generiert" erwähne ich es hier lieber mal 🙂
Ich hoffe, die Hinweise helfen Dir irgendwie weiter.
Viele Grüße
Holger
Hallo Thomas,
zwei Dinge machen mich misstrauisch. Zum einen sortierst Du in der contentSelect Funktion nach der Spalte StellenId
<ORDERCRITERIA attribute="StellenId" descending="0" />
Du benutzt dann eine Spalte, deren Namen fast identisch ist, für die contentId des Links:
contentId:item.Stellenid
Tippfehler?
Wenn nicht, versuche ich es mal allgemein: Hier wird normalerweise ein Longwert erwartet (also eine Zahl). Die Fehlermeldung deutet darauf hin, dass es sich um eine Datenbank handelt, die nicht unter FirstSpirit Kontrolle steht (da die Datenbank einen Typ bigint erwartet, aber Varchar bekommt) {hier kann ich aber auch falsch liegen, da ich nicht ausschließen kann, dass abhängig von der eingesetzten Datenbank und deren Konfiguration FirstSpirit auch bigint Spalten als ID Spalten erzeugt}.
Du schreibst, dass die Spalte vom Typ integer ist. Welche Eingabekomponente ist darauf gemappt und welchen Typ hat die ID Spalte des darüber verlinkten Datensatzes? Was ergibt denn die Ausgabe von $CMS_VALUE(item.Stellenid.class)$? Ich vermute mal, dass das keine "nummerische" Klasse ist. Möglicherweise reicht es schon aus, den Rückgabewert in eine Zahl umzuwandeln.
Oder kurz gesagt - Du musst als contentId die Id übergeben, die (aus FirstSpirit Sicht) der [nummerische] Primary Key [Bestandteil] der Datenbanktabelle ist. Die Fehlermeldung deutet darauf hin, dass es in der Datenbank eine bigint Spalte ist (also eine Zahl), Du aber einen varchar Wert (also einen String) übergibst. Das kann (bei einer nicht unter FirstSpirit Kontrolle stehenden Datenbank) auch an so etwas banalem wie einer falschen Eingabekomponente (CMS_INPUT_TEXT oder CMS_INPUT_COMBOBOX anstatt CMS_INPUT_NUMBER) und der dann fehlenden Umwandlung in eine Zahl liegen.
Zum anderen sprichst Du von Detailseite und führst gleichzeitig eine contentSelect Funktion an - das könnte ein Missverständnis sein. Detailseite werden über Tabellenvorlagen erzeugt. Im Sitestore wird dann definiert, wieviele von welchen Datensätzen auf der entsprechenden Seite dargestellt werden sollen. ContentSelect Funktionen dienen normalerweise dazu, mehrere Datensätze einer Tabelle auf einer Seite zu erzeugen. Wobei es natürlich viele Anwendungsfälle gibt, in denen man auf einer Detailseite andere Datensätze per contentSelect Funktion ausgibt. Das wären dann aber Inhalte, die unabhängig von der Detailseite sind.
Wie gesagt - das kann alles korrekt und so gewünscht sein, zusammen mit den Aussagen "Ich versuche verzweifelt eine Detailseite zu erstellen" und "Aber die Jobseiten werden einfach nicht generiert" erwähne ich es hier lieber mal 🙂
Ich hoffe, die Hinweise helfen Dir irgendwie weiter.
Viele Grüße
Holger
Hallo Holger
Danke für deine ausführlichen Angaben und Vermutungen... 🙂
Das eine war ein Tippfehler. Aber das eigentliche Problem lag wirklich am Key. Auch dass die Datenbank nicht durch FirstSpirit verwaltet wird stimmt.
Ich habe den Key nur auf das Attribut Stellenkey umgestellt und siehe da, es klappt.
Danke und viele Grüsse
Thomas