【发布时间】:2015-06-06 08:14:45
【问题描述】:
我的数据库结构主要由每个表的多个主键组成,因此每个连接都需要多个列。我正在尝试使用 ColdFusion(具体为 11)ORM collection property。 fkColumn 属性中的逗号分隔的列列表似乎不起作用,就像 relationship properties 一样。我有filed a bug with Adobe,但我想知道是否有其他人遇到过这个问题并找到了解决方法。或者也许我只是做错了..
表格设置
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 表达式中有多个列。
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 需要包含关系的 ID,而不是实际的关系数据。例如,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 我已经添加了您要求的示例。感谢您的任何意见。我一直在考虑使用 ORM 挂钩手动获取“加载后”数据。一旦我回到这个项目,我会试试的。
-
看起来您想要来自 Staff 实体的这个 JSON。对
Staff使用自定义序列化程序(CF11 中的新功能)并将其余部分设置为一对多或多对多与链接表。
标签: collections orm coldfusion coldfusion-11