Hibernate Sequence Id Specification [英] Hibernate Sequence Id Specification

查看:160
本文介绍了Hibernate Sequence Id Specification的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有这个注释来指定序列ID:

I have this annotation to specify a sequence id:

@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "parametro_seq_gen")
@SequenceGenerator(name = "parametro_seq_gen", sequenceName = "PARAMETROS_SQ",
      allocationSize = 1, initialValue = 1)

我发现在我的所有实体上重复都非常冗长。

I find it very verbose to repeat on all my entities.

有什么方法可以创建自定义注释或什么?我只想指定序列名称

Is there any way to create a custom annotation or something ? I want to specify only the sequence name.

推荐答案

这很简单!

只需创建一个 package-info.java ,其中存储实体并提供全局 @GenericGenerator 那里:

Just create a package-info.java where entities are stored and provide the global @GenericGenerator there:

@GenericGenerator(
    name = "pooled",
    strategy = "org.hibernate.id.enhanced.SequenceStyleGenerator",
    parameters = {
        @Parameter(name = "sequence_name", value = "sequence"),
        @Parameter(name = "initial_value", value = "1"),
        @Parameter(name = "increment_size", value = "5"),
    }
)
package com.vladmihalcea.book.hpjp.hibernate.identifier.globalsequence;

然后您的实体可以共享汇总 generic生成器如下:

Then your entities can share the pooled generic generator as follows:

@Entity(name = "Post")
public class Post {

    @Id
    @GeneratedValue(generator = "pooled")
    private Long id;
}

@Entity(name = "Announcement")
public class Announcement {

    @Id
    @GeneratedValue(generator = "pooled")
    private Long id;
}

您需要使用 @GenericGenerator 因为 @SequenceGenerator 不适用于套餐。

You need to use @GenericGenerator since @SequenceGenerator is not applicable to packages.

就是这样!

这篇关于Hibernate Sequence Id Specification的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆