【发布时间】:2012-01-30 03:48:15
【问题描述】:
我正在尝试使用 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 写入用户表,以便我可以链接回公司。在此插入中,我不想在公司表中插入任何内容。我只想写入 users 表,并通过 users 表中的 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 的值。预期的对象类型是公司。”
我在想,也许我需要为 companyID 设置单独的属性,例如“property name="companyID" ormType="int",然后也许我可以使用“newUser.setCompanyID(#FORM.companyID#);” EntitySave 但这不起作用。我在 ORMReload(); 上收到错误消息。
对于建立关系的最佳方式,我显然很困惑。我可以在不尝试正式引用 user.cfc 文件中的关系并且只使用属性 name="companyID" ormType="int" 的情况下完成这项工作,但这并不能让我在表之间建立正确的关系。我想?
在这方面的任何帮助都会很棒。
提前致谢。
【问题讨论】:
-
如果只是多对一,
property name="company"不是更好吗?
标签: hibernate orm coldfusion