2020-06-20

Hibernate JPA @Formula Example

@Formula

The @Formula annotation is used to specify an SQL fragment that is executed in order to populate a given entity attribute.

Formula Defines a formula (derived value) which is a SQL fragment that acts as a @Column alternative in most cases. Represents read-only state. In certain cases @ColumnTransformer might be a better option, especially as it leaves open the option of still being writable.
     // perform calculations
     @Formula( "sub_total + (sub_total * tax)" )
     long getTotalCost() { ... }

     // call database functions ( e.g. MySQL upper() and substring() )
     @Formula( "upper( substring( middle_name, 1 ) )" )
     Character getMiddleInitial() { ... }

     // this might be better handled through @ColumnTransformer
     @Formula( "decrypt(credit_card_num)" )
     String getCreditCardNumber() { ... }

Example : @Formula mapping usage

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

@Id
private Long id;

private Double credit;

private Double rate;

@Formula(value = "credit * rate")
private Double interest;

//Getters and setters omitted for brevity

}

No comments:

Post a Comment