Hibernate映射文件中<column>元素default属性的问题。

J2EE 码拜 6年前 (2015-05-10) 297次浏览 0个评论
 

Oracle数据库表中字段定义为:taskStatus varchar2(2) default(“”01″”) not null

Hibernate映射文件中代码段为:
<property name=”taskstatus” type=”java.lang.String”>
    <column name=”TASKSTATUS” length=”2″ not-null=”true” default=”01″ />
</property>

我在column元素中只要加入了default属性启动tomcat就报异常:
org.springframework.beans.factory.BeanCreationException: Error creating bean with name “”sessionFactory”” defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Initialization of bean failed; nested exception is org.hibernate.MappingException: invalid mapping
org.hibernate.MappingException: invalid mapping

– Error parsing XML: XML InputStream(33) Attribute “default” must be declared for element type “column”.

去掉该属性后tomcat启动就正常了。

请教一下各位数据库表中字段的default约束如何在Hibernate映射文件中定义?

50分
Hibernate映射不能定义default。至少查文档没有关于default值的定义。
个人感觉这样的处理是因为default值这样的东西写在映射文件里唯一的用处是在hbm2ddl,而且是在开发测试阶段,所以在映射里使用没有多大意义。而且,default值有些用到数据库定义的函数,在各个数据库里又是不同的,所以意义不大。
在用myeclipse生成的hbm映射文件中确实没有自动产生<column>元素的default属性。

我现在是想在调用持久化层保存一个对象到数据库中时如果数据库中表的某个字段有default约束那么我不调用pojo该属性的setter方法赋值也可以将该属性的默认值自动添加到数据库中。
不知道上述功能该如何实现?

<property … insert=”false” />
把property的insert属性设为false。
ls兄弟的方法还是不行哦。还是直接调用pojo属性的setter方法赋值算了。
怎么不行,我就这么用的。如果数据库字段设了insert=”false”,在插入的时候sql语句就忽略这个字段。当然这个property不能设置not-null=”false”
不纠缠这个细节问题了,结帖。

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明Hibernate映射文件中<column>元素default属性的问题。
喜欢 (0)
[1034331897@qq.com]
分享 (0)

文章评论已关闭!