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 不过使用的版本会在项目搭建过 ...
随机推荐
- Java 动态代理(转载)
JAVA的动态代理 代理模式 代理模式是常用的java设计模式,他的特征是代理类与委托类有同样的接口,代理类主要负责为委托类预处理消息.过滤消息.把消息转发给委托类,以及事后 处理消息等.代理类与 ...
- 【BZOJ 2005】[Noi2010]能量采集
Description 栋栋有一块长方形的地,他在地上种了一种能量植物,这种植物可以采集太阳光的能量.在这些植物采集能量后,栋栋再使用一个能量汇集机器把这些植物采集到的能量汇集到一起. 栋栋的植物种得 ...
- 【tyvj1860】后缀数组
描述 我们定义一个字符串的后缀suffix(i)表示从s[i]到s[length(s)]这段子串.后缀数组(Suffix array)SA[i]中存放着一个排列,满足suffix(sa[i])< ...
- How to open MS word document from the SharePoint 2010 using Microsoft.Office.Interop.dll
or this you must change the identity of word component inC:\windows\System32\comexp.mscto be interac ...
- Eat the Trees hdu 1693
Problem DescriptionMost of us know that in the game called DotA(Defense of the Ancient), Pudge is a ...
- OSUnMapTbl[]的原理
问题描述: ucos任务队列中优先级获取 问题解决: uCOS-II是一个多任务的操作系统,每个任务都是一个应用程序,它有自己的寄存器和堆栈空间,即任务控制块TCB(task control ...
- js学习之函数表达式及闭包
来自<javascript高级程序设计 第三版:作者Nicholas C. Zakas>的学习笔记(七) 直接切入主题~ 定义函数的方式有两种: 函数声明 function functio ...
- 一个只需要点 「下一步」就完成监控 Windows
Cloud Insight 此前已然支持 Linux 操作系统,支持20多中数据库中间件等组件,多种操作,多种搭配,服务器监控玩的其乐无穷啊!但想想还有许多 Windows 的小伙伴没有体验过,所以在 ...
- scikit-learn安装
1.依赖包: Cython.rose.numpy.scipy.lapack.atlas http://blog.chinaunix.net/uid-22488454-id-3978860.html
- 李洪强iOS开发之XMPP
XMPP历史 这个xmpp框架在2008年开始,不过是一个简单地RFC实现.提供一个最小的代理去接受三种xmpp的基本类型presence.message.iq.因为framwork只提供了最小的 ...