Hibernate etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
Hibernate etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

30 Aralık 2013 Pazartesi

Hibernate Detached Criteria


Aşağıdaki gibi bir detached criteria sorgusu ile hibernate'de subquery oluşturmak mümkün.


Hibernate tarafından aşağıdakine benzer bir SQL oluşturulacaktır:

Aşağıdaki bağlantılardan daha ayrıntılı bilgi alınabilir:

http://stackoverflow.com/questions/300491/how-to-get-distinct-results-in-hibernate-with-joins-and-row-based-limiting-pagi http://stackoverflow.com/questions/13075390/hibernate-subquery-detachedcriteria
http://stackoverflow.com/questions/3738555/hibernate-criteria-subquery
http://www.roseindia.net/hibernate/hibernate4/hibernateCriteriaDetachedSubQueries.shtml
http://www.coderanch.com/t/415182/ORM/databases/Write-Query-Hibernate

23 Eylül 2010 Perşembe

Hibernate Transform Alias To Bean

Hibernate'de bir tabloya yapılan sorgu sonucunu direkt olrak başka bir tabloya dönüştürme: ( Hibernate Transform Alias To Bean )


public List findTxnPerPCodes(String institutionId) {

  try {
     // Criteria oluşturuyoruz

     Criteria c = getSession().createCriteria(Txn.class));

     // Hibernate BUG: this. koymak gerekiyor. bkz:

     // http://www.weask.us/entry/hibernate-query-projections
     c.add(Restrictions.eq("this.institutionId", institutionId));

     // Projection oluşturuyoruz

     ProjectionList projList = Projections.projectionList();

     // Group by özelliklerini veriyoruz

     projList.add(Projections.groupProperty("institutionId"));
     projList.add(Projections.groupProperty("timeDaily"));
     projList.add(Projections.groupProperty("atmDim"));
     projList.add(Projections.groupProperty("currencyDim"));
     projList.add(Projections.groupProperty("pcode"));

     // setResultTransformer'in TxnPerPCode icinde objeleri set

     // edebilmesi icin alias veriyoruz
     projList.add(Projections.property("institutionId"), "institutionId");
     projList.add(Projections.property("timeDaily"), "timeDaily");
     projList.add(Projections.property("atmDim"), "atmDim");
     projList.add(Projections.property("currencyDim"), "currencyDim");
     projList.add(Projections.property("pcode"), "pcode");
     projList.add(Projections.count("id"), "txnCount");
     projList.add(Projections.sum("amount"), "txnAmount");

     // Criteria için projection set ediyoruz

     c.setProjection(projList);

     // Criteria sonucunu TxnPerPCode entity'lerine transform ediyoruz
     c.setResultTransformer(Transformers.aliasToBean(TxnPerPCode.class));

     return c.list();

  } catch (HibernateException e) {
     throw new DBInfrastructureException(e);
  }


}

12 Şubat 2010 Cuma

Hibernate Distinct Query With Join

Aşağıdaki gibi iki tablonun birleştirildiği (join) bir distinct sorgu düşünelim. Ayrıca sorgu bir sütuna göre de filtrelensin:

SELECT DISTINCT ud.birthDate FROM user u, userDetail ud WHERE u.id=ud.userId AND u.membershipType=?


Bunun hibernatedeki karşılığını veren fonksiyon aşağıdaki gibi olmalı:


public List<Date> findDistinctBirthDates(String membershipType) {
        try {
            Session session = getSession();
            Criteria userCriteria = session.createCriteria(User.class);
            Criteria userDetailCriteria =
                        userCriteria .createCriteria("userDetail","ud");
            userDetailCriteria.setProjection(
                        Projections.distinct(
                                    Projections.property("ud.birthDate")
                        )
            );
            userCriteria.add(Restrictions.eq("membershipType",membershipType));
            return userCriteria.list();
        } catch (HibernateException e) {
            throw new DBInfrastructureException(e);
        }
}