3:数据库序列Sequence
像Oracle这种数据库支持序列生成主键的策略,那么就可以使用JPA的Sequence作为主键的生成策略。代码如下:
@Id
@Column(name = "id")
@GeneratedValue(strategy = GenerationType.SEQUENCE)
public Integer getId() {
return id;
}
|
MySql暂时不支持序列这种主键策略,所以遇到MySql这种数据库的时候,不能使用SEQUENCE主键策略。
4:Identity生成器
有些数据库支持Identity字段作为生成器,MS SQL支持,主键创建Identity,实体标注如下:
@Id
@Column(name = "id")
@GeneratedValue(strategy=GenerationType.IDENTITY)
public Integer getId() {
return id;
}
|
单字段主键的问题,我们暂时先讨论这里,下面我们一起看看复合主键。
表结构如下图所示:
根据这个表对应生成的实体对下代码如下:
package eo;
import javax.persistence.Column;
import javax.persistence.Embeddable;
/**
* TbStudentsId entity. @author MyEclipse Persistence Tools
*/
@Embeddable
public class TbStudentsId implements java.io.Serializable {
// Fields
private String name;
private String no;
// Constructors
/** default constructor */
public TbStudentsId() {
}
/** full constructor */
public TbStudentsId(String name, String no) {
this.name = name;
this.no = no;
}
// Property accessors
@Column(name = "name", nullable = false)
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
@Column(name = "no", nullable = false)
public String getNo() {
return this.no;
}
public void setNo(String no) {
this.no = no;
}
public boolean equals(Object other) {
if ((this == other))
return true;
if ((other == null))
return false;
if (!(other instanceof TbStudentsId))
return false;
TbStudentsId castOther = (TbStudentsId) other;
return ((this.getName() == castOther.getName()) || (this.getName() != null
&& castOther.getName() != null && this.getName().equals(
castOther.getName())))
&& ((this.getNo() == castOther.getNo()) || (this.getNo() != null
&& castOther.getNo() != null && this.getNo().equals(
castOther.getNo())));
}
public int hashCode() {
int result = 17;
result = 37 * result
+ (getName() == null ? 0 : this.getName().hashCode());
result = 37 * result + (getNo() == null ? 0 : this.getNo().hashCode());
return result;
}
}
|
- 大小: 28.8 KB
分享到:
相关推荐
JPA学习笔记-EJB-04JPA关联映射总结 JPA JPA关联映射JPA学习笔记-EJB-04JPA关联映射总结 JPA JPA关联映射
总结一下关于JPA的主键生成策略,JPA是用@GeneratedValue标记来注释的。一般的我把主键生成分成两大类。第一个就是简单的单字段主键类型,一个就是复杂的复合主键类型。我们分2种情况分别讨论。 第一种单字段主键...
JPA学习笔记-EJB-06JPA+Spring使用经验。
上次简单介绍了JPA的基本部署和操作过程,算是认识JPA了,下面我们继续学习JPA吧,我们从JPA的注解标记@Table和@Column开始逐渐介绍。
本文是学习 JPA 笔记,可能会根据自己的学习进度逐渐完善。...随着笔者的学习笔记,大家一起学习吧,还是那句话,有什么问题 大家一起探讨。有什么错误希望指证!谢谢。 http://blog.csdn.net/suhuanzheng7784877
虽然持久化实体的状态在ORM中是一个老生常谈的问题,但是说实在的,我们在开发过程中真的不太在意实体的状态。在Web一般情况下也都是交给Spring去管理实体管理器(EntityManager),所以我们还是有必要啰嗦一下,...
以下是 EJB 学习笔记的知识点总结: 一、EJB 概述 * EJB 定义:EJB 是一种企业级 Java 组件模型,用于开发大型企业级应用程序。 * EJB 的特点:EJB 是基于 Java 语言的、开发、部署服务器端的分布式组件,遵循标准...
Java/JavaEE 学习笔记 作者在杰普学习时的学习笔记,是J2ee初学者必备手册,是大家学习J2EE开发的很好的参考笔记。 Java/JavaEE 学习笔记 内容目录: Unix 学习笔记..........7 一、Unix前言............7 二、...
EJB学习笔记..................314 EJB前言................314 EJB2.0.....315 第一章 EJB介绍 .315 JavaEE@xuxiang 5 Java/JavaEE学习笔记Jonny xuxiang5612@sina.com 第二章 First EJB....318 第三章 EJB原理.320...
当今orm等全自动针对对象持久化的框架越来越多并且也越来越成熟(ibatis,hibernate,ejb的jpa),但是无奈新东家需要使用jdbc(原始手工作坊)的模式和数据库打交道,用了几年的ibatis,再次使用jdbc发现有些细节和...
当今 orm 等全自动针对对象持久化的框架越来越...分清楚,所以就啰理啰嗦的整理出一份学习笔记,第一作为自己对 jdbc 重新的复习, 第二如果有可能希望给初学 jdbc 的朋友带来一定的便利,这样也不枉我点点滴滴的记 录