23 Temmuz 2018 Pazartesi

Validator DefaultGroupSequenceProvider Arayüzü

Giriş
MyBean sınıfının isRequired alanı true ise belli bir validation anotasyonunun çalışması için kullanılır.

getValidationgGroups metodu
Elimizde şöyle bir arayüz olsun.
public interface Special {
}
Şöyle yaparız.
public class BeanSequenceProvider implements DefaultGroupSequenceProvider<MyBean> {
  @Override
  public List<Class<?>> getValidationGroups(final MyBean object) {
    final List<Class<?>> classes = new ArrayList<>();
    classes.add(MyBean.class);
    if (object != null && object.getisRequired() == true) {
      classes.add(Special.class);
    }
    return classes;
  }

}
Şöyle yaparız.
@GroupSequenceProvider(BeanSequenceProvider.class) // needed at class Level
public class MyBean {


  @NotEmpty(groups = Special.class) //check for condition defined in BeanSequenceProvider
  private String mobileNumber;

  private boolean isRequired;


  // Getters and setters        
}

20 Temmuz 2018 Cuma

@Filters Anotasyonu

Örnek
Şöyle yaparız.
@Entity
@Table(name="student") 
@FilterDef(name="studentFilter", parameters={

        @ParamDef( name="maxAge", type="integer" ),
        @ParamDef( name="minAge", type="integer" ),
        @ParamDef( name="minNumber", type="integer")
})
@Filters( {
    @Filter(name="studentFilter", condition=":minAge <= age and :maxAge >= age"),
    @Filter(name="studentFilter", condition=":minNumber <= number")
} )
public class Student {}

Envers @NotAudited Anotasyonu

Örnek
Şöyle yaparız.
@Entity
@Table(name = "child")
@Audited
public class Child extends BaseEntity {

    @OneToOne
    @JoinColumn(name = "application_id")
    @MapsId
    @NotAudited
    private Parent parent;
....

17 Temmuz 2018 Salı

@TypeDefs Anotasyonu

Giriş
Birden fazla @TypeDef anotasyonu tanımlamak için kullanılır. Bu anotasyon yerine JPA 2.1 ile gelen anotasyonlar kullanılmalı.

Örnek
Şöyle yaparız.
@Entity()
@Table(name = "plan_capacities")
@TypeDefs(
        TypeDef(name = "int-array", typeClass = IntArrayType::class)
)
data class PlanCapacity(
        @Id
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        val id: Int,

        @ManyToOne
        @JoinColumn(name = "line_Id")
        val line: Line,

        @ManyToOne()
        @JoinColumn(name = "model_Id")
        val model: Model,

        @JsonBackReference
        @ManyToOne()
        @JoinColumn(name = "plan_id")
        val plan: Plan,

        @Column(name = "capacity")
        @Type(type = "int-array")
        val capacity: IntArray
) {