3 Ağustos 2018 Cuma

SQLQuery Arayüzü

Giriş
Native SQL cümlesi çalıştırmamızı sağlar.

addEntity metodu
Şöyle yaparız. Belirtilen nesne tipinden ArrayList döner.
final SQLQuery query = sf.getCurrentSession().createSQLQuery(
  "select\n" +
  "   id, null as store_id, payment_type,\n" +
  "   sum(cost_before_tax) as amount_before_tax, \n" +
  " sum(ticket_count) as count\n" +
  "from settlement_collection_initial_settlement\n" +
  "where\n" +
  "   business_date between :start and :end\n" +
  (storeID != null ? "    and store_id = :store\n" : "") +
  "group by transaction_type, payment_type"
);
query.addEntity(AmountRow.class);
        query.setDate("start", start);
        query.setDate("end", end != null ? end : start);
        if (storeID != null) {
            query.setString("store", new UUIDType().toSQLString(storeID));
        }
        return query.list();
addScalar metodu
Seçilecek sütunları ve döndürülecek tipleri belirtir. Şöyle yaparız.
query.addScalar("ID", StringType.INSTANCE)
list metodu
Şöyle yaparız.
StringBuilder query = new StringBuilder("SELECT x, y, z FROM ...");

SQLQuery query = session.createSQLQuery(query);
List result = query.list();

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;
....