Top Description Methods
org.hibernate.annotations

public @Interface Formula

extends Annotation
Annotations
@Target:METHOD, FIELD
@Retention:RUNTIME
Imports
java.lang.annotation.Retention, .Target

Specifies an expression written in native SQL that is used to read the value of an attribute instead of storing the value in a jakarta.persistence.Column.

A Formula mapping defines a "derived" attribute, whose state is determined from other columns and functions when an entity is read from the database.

A formula may involve multiple columns and SQL operators:

// perform calculations using SQL operators
@Formula("sub_total * (1.0 + tax)")
BigDecimal totalWithTax;

It may even call SQL functions:

// call native SQL functions
@Formula("upper(substring(middle_name from 0 for 1))")
Character middleInitial;

For an entity with secondary tables, a formula may involve columns of the primary table, or columns of any one of the secondary tables. But it may not involve columns of more than one table.

The ColumnTransformer annotation is an alternative in certain cases, allowing the use of native SQL to read and write values to a column.

// it might be better to use @ColumnTransformer in this case
@Formula("decrypt(credit_card_num)")
String getCreditCardNumber() { ... }
Authors
Emmanuel Bernard, Steve Ebersole
See Also
ColumnTransformer, DiscriminatorFormula, JoinFormula, DialectOverride.Formula

Method Summary

Modifier and TypeMethod and Description
public String
value()

The formula, written in native SQL.

Inherited from java.lang.annotation.Annotation:
annotationTypeequalshashCodetoString

Method Detail

valueback to summary
public String value()

The formula, written in native SQL.