Annotation Interface Formula
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;
By default, the fields of an entity are not updated with the results of evaluating
the formula after an insert
or update
. The @Generated
annotation may be used to specify that this should happen:
@Generated // evaluate the formula after an insert @Formula("sub_total * (1.0 + tax)") BigDecimal totalWithTax;
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() { ... }
-
Required Element Summary
Required Elements
-
Element Details
-
value
String valueThe formula, written in native SQL.
-