CF9.0.1 ORM: атрибут orderby в столбце ссылок «многие ко многим» в неверной таблице - PullRequest
2 голосов
/ 17 февраля 2012

Я только что натолкнулся на странную ошибку:

could not initialize a collection: [webServiceAction.aAssignedApplication#7]

, которая имеет больше смысла после рассмотрения основной причины:

[Macromedia][SQLServer JDBC Driver][SQLServer]Invalid column name 'sName'

По сути, Hibernate пытается найти столбец сортировки внутритаблица ссылок вместо одной таблицы за ссылочной сущностью.Не знаете, как указать Hibernate правильное местоположение.

Есть две сущности (webServiceAction.cfc и app.cfc), связанные через таблицу в отношении многие ко многим.Оба реализуют интерфейс HasName.cfc среди других интерфейсов ..

.

Раздел из webServiceAction.cfc:

<cfproperty name="aAssignedApplication" 
    fieldtype="many-to-many"  
    CFC="model.app" 
    linktable="G_TRelWebserviceActionAssignment" 
    fKColumn="fkWebserviceActionID" 
    inversejoincolumn="fkApplicationID" 
    lazy="true" 
    cascade="delete-orphan"  
    orderby="sName">

.

SQL, перехваченный черезпрофилировщик, прослушивающий базу данных MS SQL:

select aassigneda0_.fkWebserviceActionID as fkWebser2_5_1_, 
   aassigneda0_.fkApplicationID      as fkApplic1_1_, 
   app1_.pkApplicationID             as pkApplic1_0_0_, 
   app1_.sName                       as sName0_0_, 
   app1_.sUUID                       as sUUID0_0_, 
   app1_.sToken                      as sToken0_0_, 
   app1_.sDescription                as sDescrip5_0_0_, 
   app1_.dCreateDate                 as dCreateD6_0_0_ 
from G_TRelWebserviceActionAssignment aassigneda0_ 
inner join G_TApplication             app1_ on aassigneda0_.fkApplicationID=app1_.pkApplicationID 
where aassigneda0_.fkWebserviceActionID=? 
order by aassigneda0_.sName

Как видно из последней строки в блоке SQL, Hibernate завершает попытку поиска столбца имени в таблице ссылок вместо фактической таблицы позадиобъекты app.cfc.

Я уже попробовал более конкретную запись, добавив в нее имена сущностей и таблиц, но эти попытки тоже не сработали.

Заранее спасибоза любые попытки указать мне правильное направление.Возможно, я смогу исправить это с помощью формулы или написав файл XML самостоятельно, но я бы хотел этого избежать, если это возможно.

Приложение: Мои настройки каскада былислишком агрессивен и cascade="save-update" достаточно для этой задачи, но основная проблема все еще существует.

1 Ответ

1 голос
/ 24 февраля 2012

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

<bag table="linktable" order-by="column in linktable">
  <key column="idcol" />
  <many-to-many order-by="column in other table">
    <column name="" />
  </many-to-many>
</bag>
...