fluent nhibernate映射的数值类型问题
2017-08-04 20:41
120 查看
fluent nhibernate中,数值类型设置不当,就可能会引发一些意想不到错误。
一、引发映射错误
比如,oracle数据库中,字段ID类型是number,结果用codesmith生成代码,实体类中自动写成decimal
结果在映射中这样写,运行过程中会引发错误:
究其原因,decimal类型可能会被解释成含小数的实数,因此系统认为不适合使用sequence,因而报错。将实体类中的decimal改为int,错误得以修正。
二、数值类型不符导致关联失败
还是那个decimal问题。
有映射
结果实体类 RpYear 的属性RpYear.RpCategory永远是空的。究其原因,是因为RpYear.RPCATEGORYID 是decimal类型,而RpCategory.ID是int,对应不上。同理将RpYear.RPCATEGORYID改为int,问题得以修正。
一、引发映射错误
比如,oracle数据库中,字段ID类型是number,结果用codesmith生成代码,实体类中自动写成decimal
public virtual Decimal ID { get;set;}
结果在映射中这样写,运行过程中会引发错误:
Id(s => s.ID).GeneratedBy.Sequence("SEQ_RPYEAR");
究其原因,decimal类型可能会被解释成含小数的实数,因此系统认为不适合使用sequence,因而报错。将实体类中的decimal改为int,错误得以修正。
二、数值类型不符导致关联失败
还是那个decimal问题。
[Serializable] public class RpYear { public virtual int ID{get; set;} public virtual decimal RPCATEGORYID{get; set;} public virtual RpCategory RpCategory { get; set; } } [Serializable] public class RpCategory { public virtual int? ID { get; set; } }
有映射
public RpYearMap() { Table("Rpyear"); Id(s => s.ID).GeneratedBy.Sequence("SEQ_RPYEAR"); Map(s => s.RPCATEGORYID); References<RpCategory>(s => s.RpCategory).Column("RPCATEGORYID").Not.Insert().Not.Update(); }
结果实体类 RpYear 的属性RpYear.RpCategory永远是空的。究其原因,是因为RpYear.RPCATEGORYID 是decimal类型,而RpCategory.ID是int,对应不上。同理将RpYear.RPCATEGORYID改为int,问题得以修正。
相关文章推荐
- 在代码层面上解决由于Java用有符号数值类型映射MySQL无符号数值类型而导致的数值溢出问题
- hibernate+mysql java中boolean类型的映射问题+struts2取boolean值
- @requestbody接收json参数 映射到 实体类中 Date(时间日期)类型转换问题
- 两个long类型的数值相除问题
- Hibernate字段映射问题(包装类型与源生类型)
- java excel读取的时候手机号码变成了数值类型的值,怎么防止这种问题
- 文件后缀与Mime类型对照表/由于扩展配置问题而无法提供您请求的页面。如果该页面是脚本,请添加处理程序。如果应下载文件,请添加 MIME 映射。
- wcf 数值类型赋值不能的问题解决
- 关于LINQ字段不同类型做映射问题!
- 关于SQL Server中将数值类型转换为字符串的问题(转)
- 关于SQL Server中将数值类型转换为字符串的问题
- 数值类型的注意问题(代码形式)
- java中如何使Double类型的数值保留两位小数问题
- SpringMVC 映射Date类型时的问题,及解决
- 关于SQL Server中将数值类型转换为字符串的问题
- 关于SQL Server中将数值类型转换为字符串的问题
- 关于SQL Server中将数值类型转换为字符串的问题
- (转)在VS2005/2008中字符串编码问题的解决及字符串和数值类型常用的转换方法
- SQLSERVER Image类型 Hibernate 映射问题 简单实现
- 数值类型的注意问题(代码形式)