2

在我们的 cms 中,我们有一个用于跟踪所有对象的表。它接受来自不同对象(图像、视频、帖子、文章等)的记录 ID,并将它们映射到它们的对象类型。

我们正在升级我们的很多系统以使用 ORM,因此我现在需要将关系从对象映射到它们的对象记录。(在下面的示例中,我需要将对象属性映射到图像组件)

Object:
ID,
recordID,
classID

image:
ID,
...

所以

object.recordID = image.ID where classID = 'image'

我不确定如何设置这种一对一的关系,因为它不是主键的主键。而且它也不是唯一的外键关联,因为它是一个多列唯一性约束。

这难道不是冷聚这个时候能应付的吗?

4

1 回答 1

0

mappedBy为避免使用主对象 ID 作为键,请尝试使用 Image.cfc 中的属性将 Image 对象连接到您添加的具有双向关系的 ImageObject 子类如下所示:

Object.cfc(父)

<cfcomponent name="Object" persistent="true" accessors="true" table="objects" discriminatorColumn="classID">

    <cfproperty name="id" fieldtype="id" generator="identity" column="ID">

</cfcomponent>

ImageObject.cfc(儿童)

<cfcomponent name="ImageObject" persistent="true" accessors="true" extends="Object" table="objects" discriminatorValue="image">
    <!--- Connect to the image using the foreign key --->
    <cfproperty name="image" fieldtype="one-to-one" cfc="Image" fkcolumn="recordID">

</cfcomponent>

图像.cfc

<cfcomponent name="Image" persistent="true" accessors="true" table="images">

    <cfproperty name="id" fieldtype="id" generator="identity" column="ID">
    <!--- Connect to the ImageObject using the relationship already defined in ImageObject--->
    <cfproperty name="objectRecord" fieldtype="one-to-one" cfc="ImageObject" mappedby="image">

</cfcomponent>
于 2013-08-01T10:47:17.890 回答