hibernate注解影射表
@MappedSuperclass的用法
用在实体的继承过程中的父类上;
父类Cat
package com.xj.model;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.MappedSuperclass;
@MappedSuperclass
public class Cat {
private Long id;
private String name;
@Id
@GeneratedValue
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
子类1 BeijingCat
package com.xj.model;
import javax.persistence.Entity;
import javax.persistence.Table;
@Entity
@Table(name="t_beijingcat")
public class BeijingCat extends Cat {
private String beijing;
public String getBeijing() {
return beijing;
}
public void setBeijing(String beijing) {
this.beijing = beijing;
}
}
子类2 ShanghaiCat
package com.xj.model;
import javax.persistence.Entity;
import javax.persistence.Table;
@Entity
@Table(name="t_shanghaiCat")
public class ShanghaiCat extends Cat {
private String shanghai;
public String getShanghai() {
return shanghai;
}
public void setShanghai(String shanghai) {
this.shanghai = shanghai;
}
}
结果生成 两张表t_beijingcat、 t_shanghaicat
如果不用@MappedSuperclass 而用@Entity替换的话,只会生成一张cat表,字段有:id,name,shanghaicat,bejingcat
主键生成规则
目前@注解支持4种生成策略:
GenerationType.AUTO:根据数据库自己决定
GenerationType.TABLE:使用指定表决定主键的取值
GenerationType.SEQUENCE:使用sequence决定主键取值,适合支持sequence的数据库。
GenerationType.IDENTITY:identity类型的主键
@SequenceGenerator
父类
@MappedSuperclass
public abstract class AutoIDEntity implements Serializable { private static final long serialVersionUID = 1L; protected Long id; protected Long version; @Id
@GeneratedValue(strategy=GenerationType.SEQUENCE,generator="SEQ_STORE")
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
@Version
public Long getVersion() {
return version;
}
public void setVersion(Long version) {
this.version = version;
}
}
子类
@Entity
@org.hibernate.annotations.Entity(dynamicUpdate=true)
@SequenceGenerator(name="SEQ_STORE",sequenceName="SEQ_PAYMENTTEMPLATE_ID",allocationSize=1)
@Table(name = "TBL_NMC_PAYMENTTEMPLATE")
public class PaymentTemplate extends AutoIDEntity { private static final long serialVersionUID = 1L; /**
* 表达式(销卡通道、通道占比(针对发卡销卡)、是否最后处理通道)
*/
private String express;
/**
* 模板名称
*/
private String name;
/**
* 卡种
*/
private CardType cardType;
/**
* 描述信息
*/
private String describe;
/**
* 开关
*/
private Status status;
/**
* 创建者
*/
private String operator;
/**
* 更新时间
*/
private Date updateDate; @Column(columnDefinition = "VARCHAR(2500)")
public String getExpress() {
return express;
} public void setExpress(String express) {
this.express = express;
} @Column(columnDefinition = "VARCHAR(50)")
public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} @Enumerated(value = EnumType.STRING)
@Column(columnDefinition = "VARCHAR(20)")
public CardType getCardType() {
return cardType;
} public void setCardType(CardType cardType) {
this.cardType = cardType;
} @Column(columnDefinition = "VARCHAR(100)")
public String getDescribe() {
return describe;
} public void setDescribe(String describe) {
this.describe = describe;
} @Enumerated(value = EnumType.STRING)
@Column(columnDefinition = "VARCHAR(20)")
public Status getStatus() {
return status;
} public void setStatus(Status status) {
this.status = status;
} @Column(columnDefinition = "VARCHAR(100)")
public String getOperator() {
return operator;
} public void setOperator(String operator) {
this.operator = operator;
} public Date getUpdateDate() {
return updateDate;
} public void setUpdateDate(Date updateDate) {
this.updateDate = updateDate;
} }
这是其中一个实体类,我使用的Oracle的数据库,主键采用oracle的序列,但是问题来了,我发现我的id增长不是以1递增,而是以50递增的,当时我就很纳闷了,后面我就上网查,原来也有人遇到了这个问题,原来是少了allocationSize=1 这个,原来JPA默认的递增大小是50。同时initialValue默认为0,一般都是设置为initialValue=1 修改后的如下所示:@SequenceGenerator(name="SEQ_STORE",sequenceName="SEQ_PAYMENTTEMPLATE_ID",allocationSize=1)还有一个要注意问题:注解到底是写在 get方法上,还是写在属性上,这个一定要统一,千万不能混淆使用,我推荐写在getter方法上。Hibernate 使用Enumerated_EnumType映射枚举字段
Hibernate 使用Enumerated_EnumType映射枚举字段
Enumerated 和 EnumType 是 jpa 的两个注解。这两个注解用来映射枚举字段
枚举类
package com.lyx; /**
* Created by liyanxin on 2014/12/24.
*/
public enum Gender { MAIL("男性"), FMAIL("女性"); private String value; private Gender(String value) {
this.value = value;
} @Override
public String toString() {
return this.value;
}
}
实体类
package com.lyx; import java.io.Serializable; import javax.persistence.*; @Entity
@Table(name = "tb_user")
public class User implements Serializable { @Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
private String name;
private int age; @ManyToOne
@JoinColumn(name = "role_id", unique = false, nullable = false)
private Role role; @Enumerated(EnumType.STRING)
@Column(name = "user_gender")
private Gender gender; .......................
}
hibernate注解影射表的更多相关文章
- Hibernate注解使用以及Spring整合
Hibernate注解使用以及Spring整合 原文转自:http://wanqiufeng.blog.51cto.com/409430/484739 (1) 简介: 在过去几年里,Hibernate ...
- Hibernate Annotation (Hibernate 注解)
简介: 传统上,Hibernate的配置依赖于外部 XML 文件:数据库映射被定义为一组 XML 映射文件,并且在启动时进行加载. 然而现在借助新的 Hibernate Annotation 库, ...
- hibernate注解配置举例说明
Hibernate Annotation (Hibernate 注解) 进入:http://www.hibernate.org 说明文档: 英文:http://docs.jboss.org/h ...
- Hibernate注解(一):基本注解
在Hibernate中使用注解,主要是为了替代映射文件,完成“类到表,属性到字段”的映射.JPA提供了一套功能强大的注解.Hibernate直接使用了JPA的这套注解.当然,对于JPA中的一些不足,H ...
- Hibernate注解----关联映射注解以及课程总结详解----图片版本
上一篇,记录了Hibernate注解----类级别注解以及属性注解详解 ,我们这一节主要讲解的是Hibernate注解----关联映射注解以及课程总结详解. 本节的主要内容: 第3章 关联映射注解 3 ...
- Hibernate注解----类级别注解以及属性注解详解----图片版本
这篇文章是我在慕课网上学习Hibernate注解的时候进行手机以及整理的笔记. 今天把它分享给大家,希望对大家有用.可以进行收藏,然后需要的时候进行对照一下即可.这样能起到一个查阅的作用. 本文主要讲 ...
- hibernate注解随笔—10月8日
hibernate注解(herbinate4 jar包注解可用,使用hibernate3.3注解失败) 如果javabean与数据库中表名一致(不区分大小写),则注解不用写@Table(name=&q ...
- Hibernate注解映射联合主键的三种主要方式
今天在做项目的时候,一个中间表没有主键,所有在创建实体的时候也未加组件,结果报以下错误: org.springframework.beans.factory.BeanCreationException ...
- 【maven + hibernate(注解) +spring +springMVC】 使用maven搭建项目
研究,百度,查资料+好友帮助,使用MyEcplise2015工具,通过maven搭建hibernate+springMVC+spring的项目,数据库采用MySql5.5 不过使用的版本会在项目搭建过 ...
随机推荐
- poj 2774 Long Long Message 后缀数组LCP理解
题目链接 题意:给两个长度不超过1e5的字符串,问两个字符串的连续公共子串最大长度为多少? 思路:两个字符串连接之后直接后缀数组+LCP,在height中找出max同时满足一左一右即可: #inclu ...
- 如何查看windows操作系统当前使用的字符集
如何查看windows操作系统当前使用的字符集 Chcp 显示活动控制台代码页数量,或更改该控制台的活动控制台代码页.如果在没有参数的情况下使用,则 chcp 显示活动控制台代码页的数量. 语法 ch ...
- 元类metaClass
metaClass 实现动态改变对象的能力,这点特别像python(metaClass),Python中类(不是元类)的概念借鉴于Smalltalk groovy demo: class Person ...
- C#...何时需要重写ToString()方法?
一般类型,都是继承自System.Object类,默认情况下,object类的ToString方法会返回当前类的类型的字符串表达形式.但也有例外!! DateTime,它就重写ToString方法,D ...
- drupal CMS
http://drupalchina.cn/ https://www.drupal.org
- obj转换成数组
原则上obj是不能转换成数组的.首先array也是obj.只是一个特殊的object. obj一个很关键的点,是拥有成员和方法,撇开方法不说,obj就是一个key-value结构.也就是哈希数组,而j ...
- linux下c++實現簡單的生產者消費者隊列模式
引言 生產者消費者是一個經典的模式 利用生產者,消費者和緩衝區降低了生產者和消費者之間的的耦合度 便於對生產者和消費者的修改 下面記錄的是一個經典的單一生產者多消費者的模式 設計思路 以隊列做為緩衝區 ...
- c++调用matlab生成的Dll动态连接库
点击打开链接http://download.csdn.net/detail/nuptboyzhb/4228429 c++调用matlab生成的Dll动态连接库 实验平台: matlab 7.0(R ...
- UINavigationController使用详解
UINavigationController使用详解 有一阵子没有写随笔,感觉有点儿手生.一个多月以后终于又一次坐下来静下心写随笔,记录自己的学习笔记,也希望能够帮到大家. 废话少说回到正题,UINa ...
- 使用session技术来实现网上商城购物车的功能
首先.简单的了解session和cookie的区别: 一.session和cookie的区别: session是把用户的首写到用户独占的session中(服务器端) cookie是把用户的数据写给用户 ...