2020-06-20

Hibernate JPA @Generated Example

@Generated

The @Generated annotation is used to specify that the currently annotated entity attribute is generated by the database.

Generated - The annotated property is generated by the database.

@Generated annotation

The @Generated annotation is used so that Hibernate can fetch the currently annotated property after the entity has been persisted or updated. For this reason, the @Generated annotation accepts a GenerationTime enum value.

Considering the following entity:

Example : @Generated mapping example

@Entity(name = "Person")
public static class Person {

@Id
private Long id;

private String firstName;

private String lastName;

private String middleName1;

private String middleName2;

private String middleName3;

private String middleName4;

private String middleName5;

@Generated( value = GenerationTime.ALWAYS )
@Column(columnDefinition =
"AS CONCAT(" +
" COALESCE(firstName, ''), " +
" COALESCE(' ' + middleName1, ''), " +
" COALESCE(' ' + middleName2, ''), " +
" COALESCE(' ' + middleName3, ''), " +
" COALESCE(' ' + middleName4, ''), " +
" COALESCE(' ' + middleName5, ''), " +
" COALESCE(' ' + lastName, '') " +
")")
private String fullName;

}
When the Person entity is persisted, Hibernate is going to fetch the calculated fullName column from the database, which concatenates the first, middle, and last name.

No comments:

Post a Comment