th_biedermann
Occasional Collector

Detailpage genrieren lassen

Jump to solution

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>

 

 
Das der a href indem ich ein CMS_REF(VARIABLE, contentId: item.Stellenid)$ mitgebe.

 

<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$>

 

 
Detailpage mit der Funktion:
 

 

<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>

 

 
Datenbank:
Stellenid: xs:integer definiert.
 
Fehler beim generieren:

 

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.

 

 
Wir komme zu bigint?
 
Aber die Jobseiten werden einfach nicht generiert. Warum?
 
Danke um Hilfe 🙂
 
Grüsse
Thomas
0 Kudos
1 Solution

Accepted Solutions
hoebbel
Crownpeak employee

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

View solution in original post

0 Kudos
2 Replies
hoebbel
Crownpeak employee

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

0 Kudos

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

0 Kudos