使用Hibernate 创建数据表时,如何使数据库中的字段的长度和Hibernate映射的长度相等呢?
来源:互联网 发布:山东师范大学知乎 编辑:程序博客网 时间:2024/06/07 05:51
http://blog.csdn.net/chuck_kui/article/details/51540099
length: 指定该属性所映射数据列的字段的长度
小细节: 如果你想让映射文件在数据库中创建的的 字段是length设置的值的话,
必须要包column属性配置到property中,否则不会成length设置不会成功。
示例如下:
<property name="shiYan" type="java.lang.String" unique="true" update="false" index="person_index" column="SHI_YAN" length="20" > </property>
如下设置就不会创建成功:
<property name="shiYan" type="java.lang.String" unique="true" update="false" index="person_index" length="20" > <column name="SHI_YAN"></column> </property>
<?xml version="1.0"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN""http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"><!-- Generated 2016-5-17 14:39:37 by Hibernate Tools 3.4.0.CR1 --><hibernate-mapping package="com.baidu.cfghbm"> <class name="Person" table="PERSON" dynamic-update="true"> <id name="id" type="java.lang.Integer"> <column name="ID" /> <generator class="native" /> </id> <property name="name" type="java.lang.String" column="NAME" length="30" > </property> <property name="shiYan" type="java.lang.String" unique="true" update="false" index="person_index" length="20" > <!-- name:指定该持久化类的属性的名字 column:指定与类的属性映射的表的字段名. 如果没有设置该属性, Hibernate 将直接使用类的属性名作为字段名. type:指定 Hibernate 映射类型. Hibernate 映射类型是 Java 类型与 SQL 类型的桥梁. 如果没有为某个属性显式设定映射类型, Hibernate 会运用反射机制先识别出持久化类的特定属性的 Java 类型, 然后自动使用与之对应的默认的 Hibernate 映射类型. unique: 设置是否为该属性所映射的数据列添加唯一约束. access:指定 Hibernate 的默认的属性访问策略。默认值为 property, 即使用 getter, setter 方法来访问属性. 若指定 field, 则 Hibernate 会忽略 getter/setter 方法, 而通过反射访问成员变量 not-null:若该属性值为 true, 表明不允许为 null, 默认为 false update: 设置为 false ,表示不允许被修改,true表示可以被修改 index: 指定一个字符串的索引名称. 当系统需要 Hibernate 自动建表时, 用于为该属性所映射的数据列创建索引, 从而加快该数据列的查询. scale: 指定该属性所映射数据列的小数位数, 对 double, float, decimal 等类型的数据列有效. formula:设置一个 SQL 表达式, Hibernate 将根据它来计算出派生属性的值. 派生属性: 并不是持久化类的所有属性都直接和表的字段匹配, 持久化类的有些属性的值必须在运行时通过计算才能得出来, 这种属性称为派生属性 使用 formula 属性时formula=“(sql)” 的英文括号不能少Sql 表达式中的列名和表名都应该和数据库对应, 而不是和持久化对象的属性对应如果需要在 formula 属性中使用参数, 这直接使用 where cur.id=id 形式, 其中 id 就是参数, 和当前持久化对象的 id 属性对应的列的 id 值将作为参数传入. length: 指定该属性所映射数据列的字段的长度小细节: 如果你想让映射文件在数据库中创建的的 字段是length设置的值的话, 必须要包column属性配置到property中,否则不会成length设置不会成功。 示例如下: <property name="shiYan" type="java.lang.String" column="SHI_YAN" length="20"></property> --> <column name="SHI_YAN"></column> </property> <property name="interest" type="java.lang.String"> <column name="INTEREST" /> </property> <property name="birth" type="time" index="person_index"> <column name="BIRTH" /> </property> <!-- 映射派送属性 --> <property name="desc" formula="(SELECT concat(name,':',birth) FROM PERSON p WHERE p.id = id)"></property> <!-- 映射大对象 <property name="content" type="clob"></property> 下面的反射是精确映射content 类型 --> <property name="content"> <column name="CONTENT" sql-type="mediumtext"></column> </property> <!-- 映射二进制 <property name="image" type="blob"></property> 下面的方式是精确映射image 的类型 --> <property name="image" type="blob"> <column name="IMAGE" sql-type="mediumblob" /> </property> </class> </hibernate-mapping>
再次验证length配置的小细节
观察:关系映射文件中的name和shiYan 的 column 配置的位置 ,即其次是否在数据库中映射成功!
阅读全文
0 0
- 使用Hibernate 创建数据表时,如何使数据库中的字段的长度和Hibernate映射的长度相等呢?
- 使用Hibernate 创建数据表时,如何使数据库中的字段的长度和Hibernate映射的长度相等呢?
- 创建mysql数据表时,字段的int类型长度问题
- 数据表/字段名称和数据库关键字冲突在Hibernate映射中的处理办法
- 得到的length和数据库中的字段的长度相同
- 数据库字段长度太短 HIBERNATE异常
- java hibernate 映射和注解oracle含有blob字段的数据表的pojo源码
- 数据库字段的长度 作用
- sql server2005过系统表查出数据表的字段名称字段类型和字段长度
- Hibernate如何实现数据表映射的继承关系
- 添加JBoss插件中的hibernate tools后怎么创建hibernate配置文件和对数据库的表进行反转映射
- 添加JBoss插件中的hibernate tools后怎么创建hibernate配置文件和对数据库的表进行反转映射
- 项目问题-------传入存储过程中的参数的长度一定要和数据库表的字段长度保持一直
- Hibernate的关联映射,数据表的关联
- Hibernate继承映射,数据表的继承
- 如何从SQL数据库中获取某个字段的类型和长度
- hibernate映射数据库表如何在不插入值的情况下使表中字段默认值生效
- hibernate映射数据库表如何在不插入值的情况下使表中字段默认值生效
- 净水市场新发展 慕辰净水推出全屋净水定制
- 高级装配 —— 条件化的 bean
- Android 动画(转)
- 物体定位与检测
- Python两个内置函数——locals 和globals (学习笔记)
- 使用Hibernate 创建数据表时,如何使数据库中的字段的长度和Hibernate映射的长度相等呢?
- ArcGIS Web Adaptor (IIS) 安装指南
- 龟兔赛跑程序模拟
- 双mysql之配置文件my.cnf
- 炎炎夏日最新版Excel导入导出工具类火热出炉
- 求二叉树中两个节点的最近公共祖先
- iOS积累--objectForKey与valueForKey在NSDictionary中的差异
- //实现对输入时间的前后N天的查找
- KVM — 使用 qemu-kvm 原生工具栈实现创建管理虚拟机实例