Home > Java > javaTutorial > How Can I Generate Database Sequence Values for Non-ID Columns in Hibernate?

How Can I Generate Database Sequence Values for Non-ID Columns in Hibernate?

Barbara Streisand
Release: 2024-11-29 05:47:11
Original
392 people have browsed it

How Can I Generate Database Sequence Values for Non-ID Columns in Hibernate?

Hibernate Sequence for Non-ID Columns

Using database sequences to generate values for non-primary key columns in Hibernate is a common requirement. Unfortunately, hibernate currently provides no built-in method for achieving this.

The @GeneratedValue annotation can only be used in conjunction with @Id to auto-generate values for primary keys. The challenge arises because Hibernate assumes that non-ID properties should be handled by the user application.

To overcome this limitation, a workaround involves creating a separate entity with an auto-generated Id. This entity then becomes responsible for generating the sequence value that can be assigned to the non-ID property in the target entity.

Consider the following example:

@Entity
public class GeneralSequenceNumber {
  @Id
  @GeneratedValue(...)
  private Long number;
}

@Entity
public class MyEntity {
  @Id
  private Long id;

  @OneToOne(...)
  private GeneralSequenceNumber myVal;
}
Copy after login

In this scenario, a new instance of GeneralSequenceNumber is created, and its number field is auto-generated. This value is then assigned to the myVal property in MyEntity during entity persistence.

While this workaround adds an extra entity, it provides a solution for managing non-ID property sequences in Hibernate. Until a more seamless approach is implemented, this method offers a practical solution to this common use case.

The above is the detailed content of How Can I Generate Database Sequence Values for Non-ID Columns in Hibernate?. For more information, please follow other related articles on the PHP Chinese website!

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Articles by Author
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template