Orm 对于相关对象,使用与PK相同的StructKeyColumn形成多对多表单

Orm 对于相关对象,使用与PK相同的StructKeyColumn形成多对多表单,orm,coldfusion,Orm,Coldfusion,背景:我正在尝试将基于Transfer ORM的应用程序更改为尽可能透明的Hibernate ORM应用程序 当相关表的主键是Struct键时,集合类型为Struct的manytomany出现问题 Transfer将允许您执行以下操作: 等效的Hibernate/CFProperty标记为: <cfproperty name="Timezones" fieldtype="many-to-many" linktable="RegionTimezones" cfc="Timezone"

背景:我正在尝试将基于Transfer ORM的应用程序更改为尽可能透明的Hibernate ORM应用程序

当相关表的主键是Struct键时,集合类型为Struct的manytomany出现问题

Transfer将允许您执行以下操作:


等效的Hibernate/CFProperty标记为:

<cfproperty name="Timezones" fieldtype="many-to-many" linktable="RegionTimezones" cfc="Timezone" singularName="Timezone" FKColumn="TimezoneID" inversejoincolumn="RegionID" type="struct" structkeytype="string" structkeycolumn="TimezoneID" />

然而,这是错误的 “集合映射中的重复列:区域。时区列:TimezoneID”

structkeycolumn似乎不能是另一个表的主键

我的问题是,我有很多现有的调用代码,它们利用了Transfer的处理方式

有人知道这方面的解决办法吗?我有很多人谈论一对多的链接表,但找不到任何关于如何在CF中实现这一点的参考资料

谢谢,
Dave

我以前遇到过同样的限制,但没有找到解决方法,因此我最终使用了数组。感谢Henry,我接受了你的数组想法,并添加了一些方法,如getXXXStruct(),可以在数组中循环。我以前遇到过同样的限制,但没有找到解决方法,因此我最终使用了数组。感谢Henry,我赞同您的数组想法,并添加了一些方法,如getXXXStruct(),这些方法在数组中循环。
<cfproperty name="Timezones" fieldtype="many-to-many" linktable="RegionTimezones" cfc="Timezone" singularName="Timezone" FKColumn="TimezoneID" inversejoincolumn="RegionID" type="struct" structkeytype="string" structkeycolumn="TimezoneID" />