Moja struktura bazy danych składa się głównie z wielu kluczy podstawowych na tabelę, w związku z tym wymagane są liczne kolumny dla każdego sprzężenia. Próbuję użyć ColdFusion (11 to be specific) ORM collection property. Wygląda na to, że rozdzielona przecinkami lista kolumn w atrybucie fkColumn
nie działa, tak jak w przypadku relationship properties. Mam filed a bug with Adobe, ale zastanawiam się, czy ktoś jeszcze do tego nie doszedł i znalazł obejścia. A może jestem po prostu robi to źle ..ColdFusion: Kolekcja ORM z wieloma kluczami obcymi
Tabela konfiguracji
Years Staff StaffSites Sites
=========== ============ ============ ===========
YearID (PK) StaffID (PK) YearID (PK) SiteID (PK)
YearName StaffName StaffID (PK) SiteName
SiteID (PK)
Staff 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';
}
Problem
jest błąd podczas generowania wygenerowanego zapytania: [Macromedia][SQLServer JDBC Driver][SQLServer]An expression of non-boolean type specified in a context where a condition is expected, near ','.
Przyjrzawszy się wygenerowanemu zapytaniu, wydaje się, że lista kolumn nie jest prawidłowo przeanalizowana pod kątem klauzuli where
, ale w pewnym stopniu rozumie, że w wyrażeniu select
znajduje się wiele kolumn.
select
sites0_.StaffID,
YearID as StaffID1_2_0_,
sites0_.SiteID as SiteID4_0_
from
StaffSites sites0_
where
sites0_.StaffID,YearID=?
poprawnie obsługują multi-key "join" Cel
Dla właściwości zbierania ORM. Dlaczego nie skorzystać z relacji? Chciałbym użyć obiektów ORM, aby następnie serializować jako JSON do użytku w usługach REST. Zserializowany JSON musi zawierać identyfikator relacji, a nie rzeczywiste dane relacji. Na przykład, ładunek JSON powinno być:
{
"id": 1234,
"year": 2015,
"sites": [1,2,3]
}
Zamiast coś takiego:
{
"id": 1234,
"year": 2015,
"sites": [
{"id": 1, "name": "Foo"},
{"id": 2, "name": "Bar"},
{"id": 3, "name": "Baz"},
]
}
post próbka oczekiwanego JSON do użytku w służbach resztę. – Henry
@Henry Dodałem przykłady, o które prosiłeś. Dzięki za wszelkie dane wejściowe. Myślałem o używaniu haków ORM do ręcznego pobierania danych "po obciążeniu". Spróbuję tego, kiedy wrócę do tego projektu. – Panman
Wygląda na to, że chcesz ten JSON z encji Staff. Użyj niestandardowego serializera (nowy w CF11) dla 'Staff' i ustaw resztę jako jeden-do-wielu lub wiele-do-wielu z linktable. – Henry