[英]ColdFusion 9 ORM Relationship Mappings
我正在尝试使用ColdFusion 9.0.1 ORM定义表之间的关系。
我有2张桌子:用户和公司
我正在研究用户与公司之间的关系。 现在我有这个:
component persistent="true" table="users" datasource="core"
{
property name="userID" fieldtype="id" column="userID"
setter="false" generator="native";
property name="firstName" length="255";
property name="lastName" length="255";
property name="userName" length="45";
property name="companies" fieldtype="many-to-one" cfc="company"
fkcolumn="companyID" singularname="company";
}
和
component persistent="true" table="companies" datasource="core"
{
property name="companyID" fieldtype="id" column="companyID"
setter="false" generator="native";
property name="companyName" length="255";
property name="companyCode" length="45";;
property name="users" fieldtype="one-to-many" fkcolumn="userID" cfc="user"
cascade="all" inverse="true";
}
我在写入用户表时遇到问题。 我需要在用户表中写入一个companyID,以便可以链接回该公司。 在此插入上,我不想将任何内容插入到company表中。 我只想写到用户表,并使其通过用户表中的companyID链接到公司表。
这是我的EntitySave代码:
transaction{
newUser = EntityNew("user");
newUser.setCompanies(#FORM.companyID#);
newUser.setFirstName(#FORM.firstName#);
newUser.setLastName(#FORM.lastName#);
newUser.setUserName(#FORM.userName#);
EntitySave(newUser);
}
当我像这样运行它时,我收到此错误“无法从companyID类型的对象检索属性java.lang.String的值。期望的对象类型为company。”
我在想,也许我需要为companyID拥有一个单独的属性,例如“ property name =“ companyID” ormType =“ int”,然后在EntitySave中使用“ newUser.setCompanyID(#FORM.companyID#);”,但是当我在那里有ORMReload()时,我得到一个错误。
我显然对建立关系的最佳方法感到困惑。 我可以在不尝试正式引用user.cfc文件中的关系并且仅使用属性名=“ companyID”或ormType =“ int”的情况下进行此工作,但这并不能为我提供表之间的适当关系。 我认为?
任何帮助都会很棒。
提前致谢。
尝试更改此:
newUser.setCompanies(#FORM.companyID#);
对此:
newUser.setCompanies(EntityLoadByPK ("company", FORM.companyID));
最后一个“真”是什么? 除非您使用EntityLoad(),否则我认为这不是必需的–
EntityLoadByPK ("company", FORM.companyID)
返回一个数组,其中包含符合条件的所有实体(pk=FORM.companyID)
EntityLoadByPK ("company", FORM.companyID, true)
返回符合条件的对象(pk=FORM.companyID)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.