【发布时间】:2017-03-18 17:59:26
【问题描述】:
实体映射中的重复列:用户列:userid(应使用 insert="false" update="false" 进行映射)
这是我收到的错误消息。我有一个自引用的用户表(客户)。这样我就可以知道哪个用户在何时创建了哪个。
这是我的实体。
component table="customer" output="false" accessors="true" persistent="true" {
property name="userid" column="userid" ormtype="int" fieldtype="id" generator="identity";
property name="firstname" column="firstname" ormtype="string";
property name="lastname" column="lastname" ormtype="string";
property name="email" column="email" ormtype="string";
property name="active" column="active" type="boolean" ormtype="boolean";
property name="createdOn" column="createdOn" ormtype="date";
property name="modifiedOn" column="modifiedOn" ormtype="date";
property name="createdBy" fieldtype="one-to-one" cfc="user" fkcolumn="userid" inverse="true";
property name="modifiedBy" fieldtype="one-to-one" cfc="user" fkcolumn="userid" inverse="true";
}
我已经添加了错误消息告诉我添加到每个属性的内容,因此它们现在看起来像:
property name="createdBy" fieldtype="one-to-one" cfc="user" fkcolumn="userid" inverse="true" insert="false" update="false";
property name="modifiedBy" fieldtype="one-to-one" cfc="user" fkcolumn="userid" inverse="true" insert="false" update="false";
解决方案: 我添加了 inversejoincolumn="userid" 并且它起作用了。见下文
property name="createdBy" column="createdBy" fieldtype="one-to-one" cfc="user" inversejoincolumn="userid";
property name="modifiedBy" column="modifiedBy" fieldtype="one-to-one" cfc="user" inversejoincolumn="userid";
【问题讨论】:
-
那么在进行更改并致电
OrmReload()后,错误仍然存在吗? -
我需要能够保存/更新这些列(createdBy 和 modifiedBy),但是是的,如果我将该代码添加到所有 userid 列,包括主键,它就可以工作,但是因为我需要保存数据,从技术上讲它不起作用。
-
您不需要将其添加到 identiy
userid属性中。但无论如何,您似乎需要为您的 2 个自引用关系创建特定的键。 -
这是修复它的属性 name="modifiedBy" column="modifiedBy" fieldtype="one-to-one" cfc="user" inversejoincolumn="userid";我将 inversejoinclumn 添加到 modifiedBy 和 createdBy 中。谢谢大家的建议。