我在CF中使用ORM将整数插入到MySQL中,带有两个小数点
我将我的列数据类型设置为DECIMAL(10,2),并转储我的查询以验证变量是否包含超过小数点的值,但插入后的转储显示我的“itemPrice”是一个四舍五入整数,小数点后有两个零。然而,如果我在脚本之后输入用于设置“itemPrice”的变量,我会得到正确的数字格式,因此我不确定我的错误是什么。代码如下。请原谅这个代码的粗糙性质-我刚刚回到CF 10年后没有编码我在CF中使用ORM将整数插入到MySQL中,带有两个小数点,mysql,orm,coldfusion,Mysql,Orm,Coldfusion,我将我的列数据类型设置为DECIMAL(10,2),并转储我的查询以验证变量是否包含超过小数点的值,但插入后的转储显示我的“itemPrice”是一个四舍五入整数,小数点后有两个零。然而,如果我在脚本之后输入用于设置“itemPrice”的变量,我会得到正确的数字格式,因此我不确定我的错误是什么。代码如下。请原谅这个代码的粗糙性质-我刚刚回到CF 10年后没有编码 <cfspreadsheet action="read" src="#downloadDir#import.xls" quer
<cfspreadsheet action="read" src="#downloadDir#import.xls" query="qxldata" excludeheaderrow="yes" columnnames="PartNumber,Name,Price,Category,IsActive,Location,Description,remarks,SubLocation">
<cfloop query="qxldata" startrow="3" endrow="4">
<cfquery name="noDup">
SELECT * FROM Items
WHERE itemPN = #qxldata.PartNumber#
</cfquery>
<cfif noDup.RecordCount EQ 0>
<cfscript>
//Insert a new item
item = new items();
item.setitemPN(PartNumber);
item.setitemName(Name);
item.setitemCategory(Category);
item.setitemDescription(Description);
item.setitemBarcodeName("bc"&PartNumber&".jpg");
item.setitemImageName(PartNumber&".jpg");
//item.setitemReorderPoint(#listgetAt('#i#',7, ',')#);
//item.setitemReorderQuantity(#listgetAt('#i#',8, ',')#);
item.setitemLocation(Location);
item.setitemSubLocation(SubLocation);
//item.setitemLength(#listgetAt('#i#',11, ',')#);
//item.setitemWidth(#listgetAt('#i#',12, ',')#);
//item.setitemHeight(#listgetAt('#i#',13, ',')#);
item.setitemRemarks(remarks);
item.setitemIsActive(IsActive);
item.setitemVendorID("1");
IF(Price NEQ ''){
item.setitemPrice(Price);
}
EntitySave(item);
</cfscript>
</cfif>
<cfoutput>
#Price#
</cfoutput>
</cfloop>
谢谢你的关注 请按如下方式编辑您的问题。首先,拿走所有条形码的东西。这无关紧要。接下来,添加setItemPrice()方法的代码?我怀疑问题在于您没有使用属性的任何属性来定义属性,例如
type
或或mtype
。我的猜测是,由于这些数字没有定义,Hibernate将所有数字都视为整数。尝试将ormtype=“double”
添加到itemPrice属性DAN中-除非他重写了setItemPrice()
方法,否则将不会显示任何代码。使用ORM,您可以获得隐式访问器。感谢您的输入!Scott,你说得对-我需要在itemPrice中添加一个ormtype。当我潜入ORM时,我想我在某处读到CF将确定DB列属性并相应地采取行动。我将继续使用types/ormtypes。默认情况下,ORM使用属性定义,但您可以通过在ORM配置中添加useDBForMapping=true
告诉它使用DB进行映射。文件:
component persistent="true" table="items" {
property name="itemID" fieldtype="id" generator="increment";
property itemPN;
property itemName;
property itemCategory;
property itemDescription;
property itemBarcodeName;
property itemImageName;
property itemReorderPoint;
property itemReorderQuantity;
property itemLocation;
property itemSubLocation;
property itemLength;
property itemWidth;
property itemHeight;
property itemRemarks;
property itemIsActive;
property itemVendorID;
property itemPrice;
}