当前位置: 首页 > 面试题库 >

PostgreSQL的一个实体的多个Hibernate序列生成器

毕嘉
2023-03-14
问题内容

我可以为一个实体使用多个序列生成器吗?

@Id
@SequenceGenerator(name=”subscription_id_seq”,sequenceName=”subscription_id_seq”, allocationSize=7)
@GeneratedValue(strategy=GenerationType.SEQUENCE, generator=”subscription_id_seq”)
@Column(unique=true, nullable=false)
private Integer id

@Column(name="code", nullable=false, unique=true )
@SequenceGenerator(name="subscription_code_1_seq",sequenceName="subscription_code_1_seq", allocationSize=7)
@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="subscription_code_1_seq")
private Integer code;

问题答案:

你不能。该生成器仅适用于标识符列。

确保使用脚本(例如hibernate.hbm2ddl.import_files)创建此序列:

create sequence subscription_code_1_seq start 1 increment 7

然后使用如下映射:

@Id
@SequenceGenerator(
        name="subscription_id_seq",
        sequenceName="subscription_id_seq",
        allocationSize=7
)
@GeneratedValue(
        strategy=GenerationType.SEQUENCE,
        generator="subscription_id_seq"
)
@Column(unique=true, nullable=false)
private Integer id;

@Column(
        name="code",
        nullable=false,
        unique=true,
        insertable = false,
        updatable = false,
        columnDefinition = "BIGINT DEFAULT nextval('subscription_code_1_seq')"
)
@Generated(GenerationTime.INSERT)
private Integer code;


 类似资料:
  • 首先,我已经阅读了Hibernate——一个包含多个实体的表?。 然而,我希望将两个实体映射到同一个表,但我希望它们都是实体,我可以从中选择。我的意思是: 一个表:人(id、姓名、出生日期、城市、街道、邮政编码)。 两个实体:人(id、name、dateOfBirth)、地址(id、城市、街道、邮政编码)。 实体之间是1:1的关系,但数据库中仍然是1个表。 如果我在上面的链接中使用建议的解决方案(

  • 问题内容: 我有一个用序列生成的主键定义的实体: 我正在使用PostgreSQL,并且此密钥定义为序列号。根据PostgreSQL 退货 当我执行create()来持久化此实体的实例时,我在日志中看到以下内容(不相关的内容已被删除): 05 15:15:26.948 org.hibernate.id.enhanced.SequenceStructure [DEBUG]-获得的序列值:1604 05

  • 问题内容: 下面的查询生成一行DNA序列 结果-dna CCCGGTTCTCCCCATGCAGG 我想生成10个随机DNA序列 问题答案: 像这样吗?

  • 我在实体类中设置一些hibernate注释时遇到问题。 我的问题是:我如何告诉Hibernate,它应该在一个表中存储地址、名称和客户信息。此表应包含以下列:ID、给定、姓氏、街道、门牌号、邮政编码、城市、电话、评论。目前,Hibernate在mysql数据库中为每个实体生成一个表。因此,有必要在每个实体类(客户、名称、地址)中定义@Id。但我想用一个@Id为客户保留一张表中的所有信息。 我怎样才

  • 需要向数据库中添加一个字段,该字段将记录与该(外部)id相关的序列号。 我需要添加一个序列列,为每个帐户分别递增,实现: 请注意,顺序与帐户相关。

  • 问题内容: 我想在一个实体上使用多个Hibernate过滤器,我尝试了所有没有失败的逻辑,Google以及Hibernate文档都对此提出了不足。我无法想象这是不可能的。(使用Java 6 Hibernate 4.1.9.final) 目前,我有这个: 我想向Testcase类添加第二个独立过滤器。我所追求的是这样的: 这是我尝试过的 我试图像这样向TestCase添加多个@FilterDefs,