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);
}
}
public List
try {
// Criteria oluşturuyoruz
// Hibernate BUG: this. koymak gerekiyor. bkz:
// Projection oluşturuyoruz
// Group by özelliklerini veriyoruz
// setResultTransformer'in TxnPerPCode icinde objeleri set
// Criteria için projection set ediyoruz
// Criteria sonucunu TxnPerPCode entity'lerine transform ediyoruz
c.setResultTransformer(Transformers.aliasToBean(TxnPerPCode.class));
return c.list();
} catch (HibernateException e) {
throw new DBInfrastructureException(e);
}
}
Bilgi İçin: Hibernate Query By Example and Projections
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);
}
}
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);
}
}
Kaydol:
Kayıtlar (Atom)