Coldfusion 9.02 ORM映射为linktable

时间:2014-04-23 18:48:21

标签: orm coldfusion coldfusion-9

我有以下表格: users:userID primaryKey usersDependencies:userID,dependentUserID

例: 用户:1,2,3,4,5 usersDependencies: 1, 2 1, 3 1, 4 2, 3

以及以下部分:

User.cfc

component  persistent="true" output="false" table="users"
{

property name="userID" type="int" unSavedValue="0" fieldtype="id" unique="true" notnull="true" generator="native" default="0" setter="false";

property name="dependencies" fieldtype="many-to-many" cfc="UserDependency" fkColumn="userID" inverseJoinColumn="dependentUserID" 
         singularname="dependency" type="array" cascade="all" linktable="usersDependencies" ;

}

UserDependency.cfc 

component  persistent="true" output="false" table="usersDependencies"
{

property name="userID" fieldtype="id,many-to-one" fkcolumn="userID" cfc="User" insert="false" update="false";


property name="dependentUserID" fieldtype="id,many-to-one" fkcolumn="userID" insert="false" update="false";

}

但是上面的映射会产生以下错误: 实体映射中的重复列:UserDependency列:userID(应使用insert =&#34映射; false" update =" false")

知道如何设置它们吗?

由于

1 个答案:

答案 0 :(得分:0)

many-to-many通常是ORM应该避免的。尝试引入新实体并将many-to-many重组为2 many-to-one个关系。这通常更好,更灵活,以便以后延长。

话虽如此,如果usersDependencies只是一个链接表,它不应该是一个实体。 cfc属性应设置为User,因为您需要一组用户。请密切关注cf orm doc,以确保您已将该概念确定下来。

然而,我甚至不确定ORM是否适用于此。我有一种感觉cfdump可能会因TOP 1而崩溃,因为它对于引用多对多关系的相同类型的延迟加载效果不佳。