JPA字段映射(uuid,日期,枚举,@Lob)
转:http://www.cnblogs.com/tazi/archive/2012/01/04/2311588.html
主键:
JPA主键的生成策略不像Hibernate那么丰富。
@Id @GeneratedValue(strategy=GenerationType.IDENTITY)
private Integer id;
@GeneratedValue的属性strategy指定生成策略,
IDENTITY(自增长方式,如mysql)
SEQUENCE (序列方式,如oracle)
TABLE (表方式,该方式便于数据库移植,但效率不高,主键的值是从这个表中取得的。)
AUTO (自动方式,该方式会把主键生成交给JPA的实现者来决定,Hibernate会根据底层数据库选择合适的方式,如果用这种方式,可以不写,默认如此)
使用Hibernate提供的uuid方式(用于分布式应用,根据ip地址,JVM启动时间,系统时间和一个计数器值(在当前的JVM中惟一)产生32位长度的字符串)
@Entity
@GenericGenerator(name="uuid_s",strategy="uuid")
public class Person implements java.io.Serializable{
@Id
@GeneratedValue(generator="uuid_s") @Column(length=32)
private String id; //必须Sring
//…
}
oracle测试结果:
SQL> desc person;
名称 是否为空? 类型
----------------------------------------- -------- ---------------------------
ID NOT NULL VARCHAR2(32 CHAR)
BIRTH TIMESTAMP(6)
GENDER NUMBER(10)
NAME NOT NULL VARCHAR2(10 CHAR)
SQL> select * from person;
ID
-------------------------------------------------------------------------------
BIRTH
---------------------------------------------------------------------------
GENDER NAME
---------- --------------------
8a8a4dcf349eac5901349eac5d910001
02-1月 -12 09.47.03.339000 下午
0 tazi
日期类型:
可以直接使用java.util.Date
2011-12-12 在hibernate配置文件中可以用type=”date”
2011-12-12 12:23:12 可以用type=”datestam”(?)
12:23:12可以用type=”time”
在JPA注解方式可以用
@Temporal(TemporalType.DATE) //还有TIME,TIMESTAMP
private Date birth;
枚举类型:
男和女可以用枚举作为实体Bean的属性值类型,那么枚举值保存到数据库后使用枚举值使用索引值(0开始)还是字符值呢。注意保存枚举值时加上非空约束,最好加上长度。
面向对象的方式考虑问题,怎样设置默认值,直接在类的属性里设值。
package com.domin;
public enum Gender {
MAN,WOMAN
}
@Enumerated(EnumType.STRING) @Column(length=5,nullable=true) //ORDINAL为索引方式
private Gender gender=Gender.MAN;//设置默认值
(2)可以在Byte[]类型的字段上加@Lob
mysql中对应longblob
oracle中不能使用byte[]字段加@Lob的方式直接映射
大数据字段最好再加上延迟加载
@Lob @Basic(fetch=FetchType.LAZY)
private Byte[] file;
JPA字段映射(uuid,日期,枚举,@Lob)的更多相关文章
- SpringData JPA进阶查询—JPQL/原生SQL查询、分页处理、部分字段映射查询
上一篇介绍了入门基础篇SpringDataJPA访问数据库.本篇介绍SpringDataJPA进一步的定制化查询,使用JPQL或者SQL进行查询.部分字段映射.分页等.本文尽量以简单的建模与代码进行展 ...
- 关于hibernate字段映射@colunm出现的问题以及jpa驼峰大写转_小写的问题探究
关于hibernate字段映射@colunm出现的问题以及jpa驼峰大写转_小写的问题探究2018年04月24日 15:47:26 守望dfdfdf 阅读数:735 标签: @colunmhibern ...
- hibernate字段映射枚举类型
上一篇介绍了mybatis字段映射枚举类型,这一篇给大家介绍一下hibernate字段怎么去映射枚举类型的(这只是一种参考方式,映射方法还有很多种). 还是以上篇sku表为例,sku表里一个statu ...
- mybatis字段映射枚举类型
在底层使用mybatis的时候,我们可能会需要把表里的字段映射到Java里面的枚举类,现总结下工作中的用法: sku表里一个status_type字段为int类型.(这里是postgresql的脚本) ...
- 【JPA】映射
[JPA]映射 转载:https://www.cnblogs.com/yangchongxing/p/10120447.html 1.@Entity注解指定实体类 2.@Id注解指定实体主键 3.@T ...
- [hibernate]基本值类型映射之日期类型
hibernate基本值类型映射中日期类型支持date,time,timestamp这三个选项,其中 date:对应数据库中的date类型,表示只显示日期 time:对应数据库中的time类型,表示只 ...
- 无废话ExtJs 入门教程九[数字字段:NumberField、隐藏字段Hidden、日期字段:DataFiedl]
无废话ExtJs 入门教程九[数字字段:NumberField.隐藏字段Hidden.日期字段:DataFiedl] extjs技术交流,欢迎加群(201926085) 继上第六节内容,我们在表单里加 ...
- MySQL字段之集合(set)枚举(enum)
MySQL字段之集合(set)枚举(enum) (2008-12-23 13:51:23) 标签:it 分类:MySQL 集合 SET mysql> create table jihe(f1 ...
- Model Builder中Table2Table中字段映射的问题
ArcGIS10中使用过程中,Bug不少.尽管有了SP3,但模型耦合的深层次的应用中还是错误不少.目前只是遇到一个,利用躲避的方法解决一个.例如,从NetCDF中抽出的数据表,必须在内存和数据库中都存 ...
随机推荐
- BNU10792:沙漠旅行者
有个旅行者计划横穿沙漠,沙漠中水资源很匮乏.旅行者需要依靠补给站的支持,才能横穿整个沙漠.假设所有的补给站都在一条直线上,而且旅行者一定沿着这条直线走.起点在1号补给站,终点在第N号补给站,起点和终点 ...
- c#中从string数组转换到int数组
以前一直有一个数组之间转换的东西,可是忘记了,今天也是找了好久也没有解决,最后用这种方法解决了,分享给大家. " }; int[] output = Array.ConvertAll< ...
- ArrayList 学习笔记
接口 ArrayList实现了List接口,因此可以当作一个List来使用. 此外,ArrayList还实现RandomAccess接口和Serializable,说明ArrayList支 ...
- Java基础知识强化67:基本类型包装类之Integer直接赋值的面试题
1. 面试题: Integer i = 1: i += 1: 做了哪些事情? (1)其中Integer i =1:做了自动装箱( 使用valueOf()方法,int ---> Integer ...
- Java设计模式---工厂模式(简单工厂、工厂方法、抽象工厂)
工厂模式:主要用来实例化有共同接口的类,工厂模式可以动态决定应该实例化那一个类.工厂模式的形态工厂模式主要用一下几种形态:1:简单工厂(Simple Factory).2:工厂方法(Factory M ...
- Java多线程练习三
public class ex5 { public static void main(String [] args) { thread5 t1 = new thread5(); thread5_1 t ...
- Java 图片设置圆角(设置边框,旁白)
/** * 图片设置圆角 * @param srcImage * @param radius * @param border * @param padding * @return * @throws ...
- jquery中attr与pror
- 怎么用C#获取Scenario step在specflow里
公司最近在用specflow 这种BDD的模式,但PM还是想把case再存进TestManager里面一份儿一遍后期集成TestManager 自动runcase用.所以我们需要获取每个scenari ...
- debian系(Ubuntu)安装jenkins(持续集成)
wget -q -O - http://pkg.jenkins-ci.org/debian/jenkins-ci.org.key | sudo apt-key add - sudo sh -c 'ec ...