Java Persistence API 简称JPA,它是作为EJB3.0规范( )中的附加持久规范而被开发出来。Hibernate3也使用JPA Annotation来替代以前hbm配置文件,在新项目使用了一下,感觉非常方便。但这几天出现了一个奇怪的问题。
@Entity()
@Table(name = "user_score_history")
public class UserScoreHistoryVO implements Serializable {
private int id;
private int userId;
private int scoreChange;
private int levelChange;
private String changeReason;
private String parameters;
private Timestamp createTime;
@Id
@SequenceGenerator(name="seq_user_score_history_id",sequenceName = "seq_user_score_history_id")
@GeneratedValue(strategy = GenerationType.SEQUENCE,generator = "seq_user_score_history_id")
public int getId() {
return id;
}
...
}
但是每次保存新对象时都发现id都不对,与定义的sequence不一致,每一次都起始的id值都是50的倍数,而日志里看插入时也有调用sequence的sql语句。到网上查了一下,也没有结果。郁闷!看到一个对JPA的介绍
@SequenceGenerator如果使用 批注指定一个 SEQUENCE 类型的主键生成器,则可以使用 @SequenceGenerator 批注微调该主键生成器以:
更改分配大小以匹配应用程序要求或数据库性能参数
更改初始值以匹配现有的数据模型(例如,如果基于已经为其分配或保留了一组主键值的现有数据集构建)
使用现有数据模型中预定义的序列
列出了此批注的属性。有关更多详细信息,请参阅 。有关更多详细信息,请参阅 。
表 1-42 @SequenceGenerator 属性
属性必需说明name
SequenceGenerator 的名称必须匹配其 startegy 设置为 SEQUENCE 的 GeneratedValue 的名称。
allocationSize
默认值: 50.
默认情况下,JPA 持续性提供程序使用的分配大小为 50。
如果此分配大小与应用程序要求或数据库性能参数不匹配,请将 allocationSize 设置为所需的 int 值。
initialValue
默认值: 0.
默认情况下,JPA 持续性提供程序假设持续性提供程序将所有主键值的起始值设置为 0。
如果这与现有数据模型不匹配,请将 initialValue 设置为所需的 int 值。
sequenceName
默认值:JPA 持续性提供程序分配它自己创建的序列名。
如果要使用事先存在或预定义的序列,请将 sequenceName 设置为所需的 String 名称。
allocationSize默认值: 50???是不是这个,试着把allocationSize = 1加入@SequenceGenerator,果然就对了。
唉,这个世界连sun都不能相信了,还能相信谁啊!
分享到:
相关推荐
JPA教程JPA教程JPA教程JPA教程JPA教程
jpa jpa规范 jpa源码 jpa jpa规范 jpa源码
jpajpajpajpajpajpajpajpajpajpajpajpajpa
包括TOPLink JPA,Hibernate JPA,Open Jpa,jpa批注
JPA视频_PPT及源码 · 1. JPA视频_概述 · 2. JPA视频_HelloWorld · 3. JPA视频_基本注解 · 4. JPA视频_Transient注解 · 5. JPA视频_Temporal注解 · 6. JPA视频_Table主键生成策略 · 7. JPA视频_...
这是JPA标签配置手册,从ORACLE官方得到的资料,里面对JPA所有的标签都进行详细的说明。 Index of Annotations • A o @AssociationOverride o @AssociationOverrides o @AttributeOverride o @AttributeOverrides ...
jpa 关联映射jpa 关联映射jpa 关联映射jpa 关联映射jpa 关联映射jpa 关联映射jpa 关联映射jpa 关联映射jpa 关联映射jpa 关联映射jpa 关联映射jpa 关联映射jpa 关联映射jpa 关联映射jpa 关联映射jpa 关联映射jpa 关联...
Spring Data JPA API。 Spring Data JPA 开发文档。 官网 Spring Data JPA API。
总结一下关于JPA的主键生成策略,JPA是用@GeneratedValue标记来注释的。一般的我把主键生成分成两大类。第一个就是简单的单字段主键类型,一个就是复杂的复合主键...4. Sequence:像Oracle支持Sequence的生成主键策略
JPA
Spring Data JPA 简化 JPA 开发
JPA学习参考文档 JPA学习参考文档 JPA学习参考文档
spring注解完整版+spring data jpa官方文档中文翻译+JPA2.0官方文档 文档内容齐全 值得参考学习
jpa 全面学习资料 入门 实战 示例 jpa开发手册 JPA_全面讲解 JPA使用入门_基础 JPA学习笔记 JPA注解 JPA简介
JPA JAPJPA JAPJPA JAPJPA JAPJPA JAPJPA JAPJPA JAPJPA JAPJPA JAPJPA JAP
Spring Data JPA中文文档1.4.3
JPA用于整合现有的ORM技术,可以简化现有Java EE和Java SE应用的对象持久化的开发工作,实现ORM的统一。JPA作为一项对象持久化的标准,不但可以获得Java EE应用服务器的支持,还可以直接在Java SE中使用。JPA必将...
JPA的API非常简洁,但是描述很全面 需要的JPA知识全部可以找到
Hibernate、iBATIS、TopLink、Castor JDO、Apache OJB等这么多持久层框架,你还在为学习上面那个框架而苦恼吗?你还为研究下一代是那个而头疼吗?...朋友,学习JPA吧!JPA的出现就是解决您上面的苦恼的。
#boot-jpa-security-dmdb-freemark spring boot spring security 达梦数据库 ftl assembly 打包