16 Ocak 2020 Perşembe

@Formula Anotasyonu

Giriş
Entity yüklenirken başka tablodan veri çekip yüklemek için kullanılabilir. Sınıf içindeki başka bir alana erişebilir. Açıklaması şöyle
Even if it is best to adhere to the JPA standard, in reality, many JPA providers offer additional features targeting a high-performance data access layer requirements.
For this purpose, Hibernate comes with the following non-JPA compliant features:
Örnek
Şöyle yaparız.
@Formula("(select current_date())")
Date currentDate;
Örnek
Şöyle yaparız
@Entity
@Table(name = "roles")
public class Role {

  @Id
  @GeneratedValue(generator = "roles_id_seq", strategy = GenerationType.SEQUENCE)
  @SequenceGenerator(name = "roles_id_seq", sequenceName = "roles_id_seq",
    allocationSize = 1)
  @Column(name = "id")
  private Long id;
  ...

  @Formula("(SELECT COUNT(*) FROM user_roles us WHERE us.id_role = id)")
  private Integer countUsing;
}
Örnek
Şöyle yaparız.
@MappedSuperclass
public abstract class BaseEntity {

  @Id
  protected String id;

  @Formula("(select d from SOME_TABLE ST ST.some_id = id)")
  private Long property4;

}