ColdFusion FW1 (ibernazione) base join tra tabelle - “andamento previsto per partecipare!”

StackOverflow https://stackoverflow.com/questions/8825181

Domanda

Sto cercando di fare un semplice join che avrebbe preso un paio di secondi in SQL, ma ... sto cercando di farlo funzionare con ORMExecuteQuery (Coldfusion 9 sulla base di Hibernate).

Ho 3 oggetti: - Contatto - ContactCategory_Link - ContactCategory

dettagli Componenti seguirà dopo la breve descrizione di ciò che funziona e ciò che non funziona.

In sostanza un contatto può avere molte categorie, e una categoria può avere molti contatti pure. Da quando ho bisogno di aggiungere diversi parametri per ogni link (per esempio mi piacerebbe ordinare le categorie per ogni contatto (gli utenti finali devono essere in grado di riordinare le categorie), più altre informazioni richieste dal mio sistema). Non ho usato la relazione molti-a-molti, perché non sembra essere possibile aggiungere questo tipo di informazioni aggiuntive.

Così qui è la richiesta che funziona perfettamente:

<cfset response["rows"] = ORMExecuteQuery("
        SELECT new map(c.name as Name)
        FROM Contact c
        ")>

Si dà perfettamente il nome del contatto. Tuttavia ogni volta che tenta di aggiungere un altro tavolo, fallirà. Ad esempio:

<cfset response["rows"] = ORMExecuteQuery("
        SELECT new map(c.name as Name)
        FROM Contact c
        JOIN ContactCategory_Link
        ")>

Darà:

Path expected for join! 

Anche se sto cambiando ContactCategory_Link per ContactCategory_Link.contact, darà qualcosa di simile:

Invalid path: 'null.contact'

Quindi sto cercando di indovinare i miei componenti CFC non sono impostate correttamente, ma non vedo il motivo.

Mi può aiutare su questo argomento?


Ecco il codice di ogni oggetto:

<cfcomponent displayname="Contact" entityname="Contact" table="step8_contact" persistent="true"  output="false">

<cfproperty name="id" column="contactID" type="guid" fieldtype="id" setter="false" unique="true" notnull="true" generated="insert" generator="identity">

<cfproperty name="name" column="name" type="string" length="125" required="true">

<cfproperty name="categories" fieldtype="one-to-many" singularname="category" fkcolumn="contactID" cfc="ContactCategory_Link" missingRowIgnored="true" cascade="all-delete-orphan">

</cfcomponent>

<cfcomponent displayname="ContactCategory_Link" entityname="ContactCategory_Link" table="step8_contactcategory_link" persistent="true" output="false">

<cfproperty name="id" column="contactcategory_linkID" type="numeric" fieldtype="id" setter="false" unique="true" notnull="true" generated="insert" generator="identity">

<cfproperty name="orderId" column="orderId" type="numeric" required="true"> <!---notnull="true"--->

<cfproperty name="contact" fieldtype="many-to-one" fkcolumn="contactID" cfc="Contact" missingRowIgnored="true">
<cfproperty name="contactcategory" fieldtype="many-to-one" fkcolumn="contactcategoryID" cfc="ContactCategory" missingRowIgnored="true">

</cfcomponent>

<cfcomponent displayname="ContactCategory" output="false" persistent="true" entityname="ContactCategory" table="step8_contactcategories" hint="" cacheuse="read-only" cachename="contactcategory">

<cfproperty name="id" column="contactcategoryID" type="numeric" fieldtype="id" setter="false" unique="true" notnull="true" generated="insert" generator="identity">
<cfproperty name="label" column="label" type="string" length="255" required="true" notnull="true">
<cfproperty name="orderId" column="orderId" type="numeric" required="true" notnull="true">

<cfproperty name="categories" fieldtype="one-to-many" singularname="category" fkcolumn="contactcategoryID" cfc="ContactCategory_Link" missingRowIgnored="true" cascade="all-delete-orphan" lazy="true"> 
</cfcomponent>

Grazie per il vostro aiuto.

È stato utile?

Soluzione

cfset è probabilmente una HQL-query (hibernate Query Language = oggetto linguaggio di query). è necessario

<cfset response["rows"] = ORMExecuteQuery("
    SELECT c.name as Name, cat.whatever as Whatever
    FROM Contact c
    JOIN c.Categories cat
    ")>
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top