Моя структура базы данных в основном состоит из нескольких первичных ключей для каждой таблицы, поэтому для каждого соединения требуется несколько столбцов. Я пытаюсь использовать ColdFusion (11 для конкретного) ORM collection property. Кажется, что список столбцов, разделенных запятыми, в атрибуте fkColumn
не работает, как и для relationship properties. У меня есть filed a bug with Adobe, но мне интересно, если кто-то еще столкнулся с этим и нашел обходные пути. Или, может быть, я просто делаю это неправильно ..ColdFusion: коллекция ORM с несколькими внешними ключами
Настройка Таблица
Years Staff StaffSites Sites
=========== ============ ============ ===========
YearID (PK) StaffID (PK) YearID (PK) SiteID (PK)
YearName StaffName StaffID (PK) SiteName
SiteID (PK)
Сотрудники ORM CFC
component persistent=true table='Staff' {
property name='id' column='StaffID' fieldType='id';
property name='year' column='YearID' fieldType='id';
property name='sites' elementColumn='SiteID' fieldType='collection' table='StaffSites' fkColumn='StaffID,YearID';
}
Проблема
Там ошибка при запуске сгенерированного запроса: [Macromedia][SQLServer JDBC Driver][SQLServer]An expression of non-boolean type specified in a context where a condition is expected, near ','.
Если посмотреть на сгенерированный запрос, представляется, что список столбцов не был правильно разобран для предложения where
, но он несколько понимает, что в выражении имеется несколько столбцов.
select
sites0_.StaffID,
YearID as StaffID1_2_0_,
sites0_.SiteID as SiteID4_0_
from
StaffSites sites0_
where
sites0_.StaffID,YearID=?
Цель
Для свойства коллекции ORM для корректной поддержки мульти-ключ "присоединиться". Почему бы не использовать отношения? Я хотел бы использовать объекты ORM, чтобы затем сериализоваться как JSON для использования в службах REST. Сериализованный JSON должен содержать идентификатор для отношений, а не фактические данные отношений. Например, полезная нагрузка JSON должна быть:
{
"id": 1234,
"year": 2015,
"sites": [1,2,3]
}
Вместо того что-то вроде:
{
"id": 1234,
"year": 2015,
"sites": [
{"id": 1, "name": "Foo"},
{"id": 2, "name": "Bar"},
{"id": 3, "name": "Baz"},
]
}
сообщения образца ожидаемого JSON для использования в REST услугах. – Henry
@Henry Я добавил примеры, которые вы запросили. Спасибо за любой вклад. Я думал об использовании крючков ORM для ручной загрузки данных «после загрузки». Я попробую, когда вернусь к этому проекту. – Panman
похоже, что вы хотите, чтобы этот JSON был создан из персонажа. Используйте специальный сериализатор (новый в CF11) для «Персонала» и настройте остальных как «один-ко-многим» или «многие-ко-многим» с помощью ссылки. – Henry