转: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)的更多相关文章

  1. SpringData JPA进阶查询—JPQL/原生SQL查询、分页处理、部分字段映射查询

    上一篇介绍了入门基础篇SpringDataJPA访问数据库.本篇介绍SpringDataJPA进一步的定制化查询,使用JPQL或者SQL进行查询.部分字段映射.分页等.本文尽量以简单的建模与代码进行展 ...

  2. 关于hibernate字段映射@colunm出现的问题以及jpa驼峰大写转_小写的问题探究

    关于hibernate字段映射@colunm出现的问题以及jpa驼峰大写转_小写的问题探究2018年04月24日 15:47:26 守望dfdfdf 阅读数:735 标签: @colunmhibern ...

  3. hibernate字段映射枚举类型

    上一篇介绍了mybatis字段映射枚举类型,这一篇给大家介绍一下hibernate字段怎么去映射枚举类型的(这只是一种参考方式,映射方法还有很多种). 还是以上篇sku表为例,sku表里一个statu ...

  4. mybatis字段映射枚举类型

    在底层使用mybatis的时候,我们可能会需要把表里的字段映射到Java里面的枚举类,现总结下工作中的用法: sku表里一个status_type字段为int类型.(这里是postgresql的脚本) ...

  5. 【JPA】映射

    [JPA]映射 转载:https://www.cnblogs.com/yangchongxing/p/10120447.html 1.@Entity注解指定实体类 2.@Id注解指定实体主键 3.@T ...

  6. [hibernate]基本值类型映射之日期类型

    hibernate基本值类型映射中日期类型支持date,time,timestamp这三个选项,其中 date:对应数据库中的date类型,表示只显示日期 time:对应数据库中的time类型,表示只 ...

  7. 无废话ExtJs 入门教程九[数字字段:NumberField、隐藏字段Hidden、日期字段:DataFiedl]

    无废话ExtJs 入门教程九[数字字段:NumberField.隐藏字段Hidden.日期字段:DataFiedl] extjs技术交流,欢迎加群(201926085) 继上第六节内容,我们在表单里加 ...

  8. MySQL字段之集合(set)枚举(enum)

    MySQL字段之集合(set)枚举(enum) (2008-12-23 13:51:23) 标签:it  分类:MySQL 集合 SET mysql> create table jihe(f1 ...

  9. Model Builder中Table2Table中字段映射的问题

    ArcGIS10中使用过程中,Bug不少.尽管有了SP3,但模型耦合的深层次的应用中还是错误不少.目前只是遇到一个,利用躲避的方法解决一个.例如,从NetCDF中抽出的数据表,必须在内存和数据库中都存 ...

随机推荐

  1. @IBDesignable和@IBInspectable

    近期一直在看苹果公司提供的两本swift官方教程电子书,一部是<The Swift Programming Language>,还有一部是<Using Swift With Coco ...

  2. 【MongoDB数据库】怎样安装、配置MongoDB

    本blog以最简洁的方式记录了博主在折腾MongoDB过程中点点滴滴,当中包含下载MongoDB.配置环境变量.怎样启动MongoDBserver.怎样连接MongoDBserver以及怎样连接Mon ...

  3. 华为OJ:2041 放苹果

    这道题难点不在于代码怎么写,而是思路怎么想. 感觉一般这样的题要么你理好一个思路要么你最后总结出一个公式,要么你自己模拟它的运作方式,用迭代,或者递归的方式来做. 有点像我们曾经学的排列组合. 对于m ...

  4. Android Studio 初体验

    Google在I/O */

  5. Linux字符设备驱动

    一.字符设备基础 字符设备 二.字符设备驱动与用户空间访问该设备的程序三者之间的关系 三.字符设备模型 1.Linux内核中,使用 struct cdev 来描述一个字符设备 动态申请(构造)cdev ...

  6. Java基础知识强化33:String类之String类的获取功能

    1. String类的获取功能 int length() // 获取字符串中字符的个数(长度) char charAt(int index)//根据位置获取字符 int indexOf(int ch) ...

  7. linux中文乱码问题及locale详解

    一.修改系统默认语言及中文乱码问题记录系统默认使用语言的文件是/etc/sysconfig/i18n,如果默认安装的是中文的系统,i18n的内容如下: LANG="zh_CN.UTF-8&q ...

  8. UML基础知识

    UML:Unified Modeling Language,即统一建模语言.是一种图形化的建模语言标准. 如上图,UML可以帮助我们做软件需求分析和软件设计两方面的工作,在不同的应用场景中,UML的一 ...

  9. lvs+keepalived+nginx+tomcat

    # 拓扑如下所示 # 节点分布情况 LVS-dr-master eth0: 192.168.146.141 LVS-dr-slave eth0: 192.168.146.142 nginx1: eth ...

  10. Linux中yum手动安装、手动建立仓库文件夹关联实现关联包自动安装、yum相关命令使用

               yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器.基於RPM包管理,能够从指 ...