首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Hibernate/JPA和PostgreSQL -主键?

Hibernate/JPA和PostgreSQL -主键?
EN

Stack Overflow用户
提问于 2010-05-13 07:02:36
回答 2查看 19.5K关注 0票数 11

我正在尝试使用Hibernate/JPA实现一些基本的实体。最初,代码部署在MySQL上,运行良好。现在,我将它移植到使用PostgreSQL。在MySQL中,我的实体类使用以下语法将其主键定义为自动递增的长值:

代码语言:javascript
复制
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;

但是,我发现在尝试一次插入大量记录时,使用PostgreSQL会出现错误。我需要用什么来注释我的主键,才能在PostgreSQL中获得与MySQL相同的自动递增行为?感谢您能提供的任何帮助!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-05-15 00:37:39

我已经解决了这个问题。以前--在我的MySQL实现中--我使用了一个具有以下签名的抽象基类:

代码语言:javascript
复制
@MappedSuperclass
public abstract class AbstractDomainEntity implements Serializable {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id = null;

        ...
}

...and,然后我在我剩下的每个实体中扩展了它。此后,我将此属性下推到实体本身中,并将@GenerationType配置为SEQUENCE。例如:

代码语言:javascript
复制
public class UserProfileBean extends AbstractIdentifiedDomainEntitiy {

    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "profile_seq")
    @SequenceGenerator(name = "profile_seq", sequenceName = "profile_seq")
    private Long id = null;

        ...
}

通过这样做,可以在Hibernate/JPA和PostgreSQL中生成和利用适当的序列。以前,即使我将序列声明为GenerationType,也没有创建任何序列。感谢你在这件事上的所有帮助和建议!

票数 10
EN

Stack Overflow用户

发布于 2010-05-14 16:31:39

GenerationType.IDENTITY

票数 18
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2823396

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档