1. @Formula注解是什么?
1.1 动态计算字段值
Hibernate中的**@Formula注解允许您在实体中映射计算字段。不同于直接将数据库列映射到Java字段,@Formula**可定义SQL表达式用于字段值的动态计算。该特性特别适用于依赖其他列或表数据的只读字段。
例如,在Employee实体中需要根据first_name和last_name列生成全名,使用**@Formula**即可实现无需数据库存储全名:
@Entity
public class Employee {
@Id
private Long id;
private String firstName;
private String lastName;
@Formula("concat(first_name, ' ', last_name)")
private String fullName;
// getters and setters
}
1.2 实现原理
Hibernate在查询实体时会将**@Formula**定义的SQL表达式直接注入SELECT语句。每次实体加载时都会重新计算表达式值,非