ColdFusion ORM: порядок сортировки для отношений сущностей - PullRequest
2 голосов
/ 27 июля 2011

У меня есть приложение, которое содержит несколько спортивных клубов, каждый из которых имеет несколько контактов.

Каждый контакт может быть одного из нескольких типов, и для них существует определенный порядок отображения.

Я хочу указать этот порядок сортировки для контактов в моих отношениях сущностей, но не могу понять, как это сделать.

Чтобы прояснить ситуацию, вот мои три (упрощенных) ХФУ объекта:

club.cfc

component persistent="true" table="clubs"
{
    // identifier
    property name="clubid" fieldtype="id" setter="false" generator="identity";

    // properties
    property name="clubname";

    // relationships
    property name="contacts" cfc="contact" singularname="contact" fieldtype="one-to-many" fkcolumn="clubid";
}

contact.cfc

component persistent="true" table="contacts"
{
    // identifier
    property name="contactid" fieldtype="id" setter="false" generator="identity";

    // properties
    property name="clubid";
    property name="name";

    //relationships
    property name="contacttype" cfc="contacttype" fieldtype="many-to-one" fkcolumn="type";
}

contacttype.cfc

component persistent="true" table="contacttypes"
{
    // identifier
    property name="type" fieldtype="id" insert="false" update="false";

    // properties
    property name="typename";
    property name="displayorder";    
}

Итак, в общем, я хочу получить клуб с его контактами, отсортированными по значению displayorder в типе контакта.

Предложения

1 Ответ

3 голосов
/ 27 июля 2011

Звучит так, будто вам нужно переопределить getContacts в club.cfc, чтобы выполнить пользовательский поиск с использованием HQL. К сожалению, я не мастер по HQL, и у меня нет вашей базы данных, чтобы проверить это. Но вот мое несколько дикое предположение на HQL:

public array getContacts()
{
    return ormExecuteQuery(
        "from club cl, contact co, contacttype ct
         where co.clubid = cl.clubid and cl = :thisClub
         order by ct.displayorder"
        , { thisClub = this }
    );
}

Я уверен, что это неправильно, но, надеюсь, это поможет вам начать.

...