gpt4 book ai didi

collections - ColdFusion:具有多个外键的 ORM 集合

转载 作者:行者123 更新时间:2023-12-04 02:36:54 26 4
gpt4 key购买 nike

我的数据库结构主要由每个表的多个主键组成,因此每个连接需要多个列。我正在尝试使用 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"},
]
}

最佳答案

对于您的数据库结构,转换为 ORM 的最简单方法是使用“StaffSites”作为 linktable用于多对多关系。

您应该尝试 CF11 的自定义序列化程序 http://blogs.coldfusion.com/post.cfm/language-enhancements-in-coldfusion-splendor-improved-json-serialization-2

关于collections - ColdFusion:具有多个外键的 ORM 集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29394917/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com