2012-01-11 4 views
2

Я пытаюсь сделать базовое соединение, которое займет несколько секунд в SQL, но ... Я пытаюсь заставить его работать с ORMExecuteQuery (Coldfusion 9 на основе Hibernate).coldfusion fw1 (hibernate) базовое соединение между таблицами - «Путь, ожидаемый для соединения!»

У меня есть 3 объекта: - Контакты - ContactCategory_Link - ContactCategory

компоненты детали будут следовать после краткого описания того, что работает и что не работает.

В принципе контакт может иметь много категорий, а категория может иметь много контактов. Поскольку мне нужно добавить разные параметры для каждой ссылки (например, я хотел бы заказать категории для каждого контакта (конечные пользователи должны иметь возможность изменять порядок категорий), а также другую информацию, требуемую моей системой). Я не использовал отношения «многие-ко-многим», потому что не представляется возможным добавить такую ​​дополнительную информацию.

Так вот запрос, который работает отлично:

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

Это дает совершенно имя контакта. Однако каждый раз, когда я пытаюсь добавить другую таблицу, она не удастся. Например:

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

Даст:

Path expected for join! 

Даже если я меняю ContactCategory_Link для ContactCategory_Link.contact, это даст что-то вроде:

Invalid path: 'null.contact' 

Так что я предполагаю, что я компоненты CFC установлены неправильно, но я не понимаю, почему.

Не могли бы вы помочь мне по этому вопросу?


Вот код каждого объекта:

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

Спасибо за вашу помощь.

ответ

1

cfset, вероятно, hql-запрос (язык запросов на гибернацию = язык запросов объекта). вам необходимо

<cfset response["rows"] = ORMExecuteQuery(" 
    SELECT c.name as Name, cat.whatever as Whatever 
    FROM Contact c 
    JOIN c.Categories cat 
    ")> 
+0

Мне удалось найти решение с вашей помощью! Большое вам спасибо! Я не думал, что так будет работать, слишком много SQL в моей голове ahah;) Этот запрос решил все мои проблемы:

 Смежные вопросы

  • Нет связанных вопросов^_^