锁定老帖子 主题:Hibernate映射文件配置技巧
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-08-13
最后修改:2010-02-02
很多人在java项目开发的时候,在处理数据库时都会用到数据库映射工具--Hibernate,而对Hibernate的配置文件(.hbm文件)都有所接触,但能够适当配置hbm需要相当的积累。或许Hiberntae还存在很多Bug吧,呵呵,还有待改进。 在java的PoJo类与数据库进行映射的时候,有时候数值型数据,如Int,Float,Double等在insert或者Update操作的时候会遇到Null值的情况,这时候会产生Exception信息: null value was assigned to a property of primitive type setter of 不知道这种情况怎么解决,最笨的办法就是在数据库里写触发器,但是这个太麻烦 不知道能不能在Hibernate的配置文件中设置默认值,上网google了一下,查到以下内容:
Hibernate允许我们在映射文件里控制insert和update语句的内容.比如在映射文件中<property 元素中的update属性设置成为false,那么这个字段,将不被包括在基本的update语句中,修改的时候,将不包括这个字段了.insert同理.dynamic动态SQL语句的配置也是很常用的.下面介绍配置SQL语句的具体属性: Hibernate生成动态SQL语句的消耗的系统资源(比如CPU,内存等)是很小的,所以不会影响到系统的性能,如果表中包含N多字段,建议把dynamic-update属性和insert属性设置为true,这样在插入和修改数据的时候,语句中只包括要插入或者修改的字段.可以节省SQL语句的执行时间,提高程序的运行效率.
但是我在Property属性中设置了dynamic-insert和dynamic-update,启动tomcat服务器发现编译出错,于是将这段话(dynamic-insert="true" dynamic-update="true")放在了class中(注:这两种配置是不一样的,写在Property属性中表示是对这个字段起作用,而放在class是表示对类的所有字段起作用),配置代码如下: ... <class name="view" tablename="view" dynamic-insert="true" dynamic-update="true" /> <property name="filed" type="java.lang.Double"> <column name="filed" sql-type="number(1);default 0" > </column> </property> ... 而且还要将Pojo的类型改为对应的类包装类型(java.lang.Interger ,java.lang.Double等,或者省略为Interger和Double)
注意,修改了java代码之后,必须得restart tomcat服务,否则运行还是上次的代码 待代码修改完毕之后,启动tomcat,终于正常了。 不过似乎存在一点问题,不管你的sql-type="number(1);default 0"怎么设置默认值,它都是0,希望知道的高手指教一下,呵呵...
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
浏览 2192 次