转: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. [React] React Router: Router, Route, and Link

    In this lesson we'll take our first look at the most common components available to us in react-rout ...

  2. Android应用调试经常使用知识

    1.Android应用启动过程调试 1).进入设置-->辅助功能-->开发人员选项:假设没有打开开发人员模式.在拨号里面输入*#*#6961#*#*: 2).找到选择调试应用,打开选择你要 ...

  3. zend_db连接mysql(附完整代码)(转)

    在看这些之前请确保你正确加载了PDO扩展. 作法是编辑php.ini手动增加下面这两行(前面要没有分号;):extension=php_pdo.dllextension=php_pdo_mysql.d ...

  4. Protobuf实现Android Socket通讯开发教程

    本节为您介绍Protobuf实现Android Socket通讯开发教程,因此,我们需要先了理一下protobuf 是什么? Protocol buffers是一种编码方法构造的一种有效而可扩展的格式 ...

  5. Java基础知识强化37:StringBuffer类之StringBuffer的构造方法

    1. StringBuffer的构造方法: (1)StringBuffer(): (2)StringBuffer(CharSequence seq): (3)StringBuffer(int capa ...

  6. Dev系列控件的AJAX (转)

    介绍Dev系列控件在前台也就是客户端的一些常用方法介绍以及前后台异步通信的方法. 一.Dev Data Edit控件通用属性以及方法: 属性 1.GetEnabled():返回控件是否为可操作状态 2 ...

  7. 调用有道翻译API

    前两天朋友说起NASA开放了数据API,今儿突然想起从来没用过外部提供的API,然而简单用得多的貌似是有道词典API,就像试试,本来觉得应该挺简单的,用urllib模块很快就实现了. 不过测试时才发现 ...

  8. Oracle Enterprise Manager快速重建

    我们在使用Oracle时, 可以利用Oracle自带的EM(Enterprise Manager)来更方便的管理我们的数据库.但是有时候我们的em却有时候无法连接,造成这个问题的原因有好多,例如没有正 ...

  9. Ajax--WebService返回List

    WebService: using System.Web.Script.Services; [GenerateScriptType(typeof(people))] [WebMethod] publi ...

  10. MVC校验特性

    1.前端引入3个脚本       ①jq脚本   ②jQuery.Validate.js  ③jquery.validate.unobtrusive.js(异步验证) 2.后端加特性 在表对应的Mod ...