Ja to robím
takto
/** Create criteria.
*/
private DetachedCriteria
getCriteriaTp412(...)
{
DetachedCriteria crit =
DetachedCriteria.forClass(Tp412TO.class,
"t");
crit.add( Subqueries.propertyEq("t."
+ Tp412TO.COL_tp412aSaveTime, subselect)
);
...
return
crit;
}
/** Load List.
*/
public List
loadList(...)
{
DetachedCriteria crit =
getCriteriaTp412(...);
HibernateTemplate template =
getHibernateTemplate();
return template.findByCriteria(crit,
aFirstResult, aMaxResult);
}
/** Load only count of total
records.
*/
public int
loadListTotalCount(...)
{
DetachedCriteria crit =
getCriteriaTp412(...);
crit.setProjection(
Projections.rowCount() );
HibernateTemplate template =
getHibernateTemplate();
List list =
template.findByCriteria(crit);
Number count =
(Number)list.get(0);
return
count.intValue();
}
> -----Original Message-----
>
From: [EMAIL PROTECTED]
> [mailto:[EMAIL PROTECTED]]
On Behalf Of Michal Palička
> Sent: 19. septembra 2006 10:04
> To:
Java
> Subject: RE: hibernate substr nebo
position
>
>
>
> Dobry den,
>
> jeste je
moznost to udelat takto:
>
> (1)
> Vyberu dle kriteria
primarni klice vyhovujicich zaznamu.
>
> (2)
> Count spocitam
v Jave.
>
> (3)
> Konkretni objekty pak ziskavam na zaklade
prve nactene kolekce
> klicu priblizne takto "from Cat c where c.id in
(keys)".
>
> Podminku vyberu specifikuji jen poprve, kdyz nacitam
klice.
> Nacitani objektu po strankach je v podstate stale
stejne.
>
> mp.
>
> -----Original Message-----
>
From: [EMAIL PROTECTED]
> [mailto:[EMAIL PROTECTED]]
On Behalf Of Burdik Petr
> Sent: Tuesday, September 19, 2006 9:52
AM
> To: Java
> Subject: Re: hibernate substr nebo
position
>
> Ahojda,
> a posledni spek, v count sestavuju
prakticky stejny dotaz
> jako v samotnem strankovanem query. Premyslim jak
nasazet
> vsechna criteria jednou a pak zavolat jenom dva ruzne
dotazy.
> Nebyl by to problem kdybych nepotreboval napred ten
count.
> Jde samozrejme napsat potomek criteria ktery bude
>
implementovat klonovani. Takze seberu prvni klon, vytvorim
> jeden dotaz,
druhy klon pak na query. Ale mozna ma nekdo
> nejake pekne reseni tak si
dam poradit :)
>
> Pet
>
> Jaroslav Hurdes
wrote:
> > Jde to i takto
> >
> > Criteria c =
...;
> > c.setProjection(Projections.count("id"));
> > Integer
count = (Integer) c.uniqueResult();
> >
> > kde id je jmeno
sloupce s primarnim klicem.
> > Jaroslav Hurdes
> >
>
> Burdik Petr wrote:
> >> No to jde i u query. Tam je to uplne
shodne. Podle me jejich hlavni
> >> teziste je v tom ze kdyz mate
formular pro vyhledavani
> podle spousty
> >> kriterii,
nemusite davat dohromady zadny select, pocitat pozice
> >> parametru
v dotazu, ... Alespon proto ho chci pouzit ja.
> >>
>
>>
.setFirstResult((((int) selectedPage - 1) *
> (int) interval))
>
>>
.setMaxResults((int) interval)
> >>
> >> To funguje u
obou. Jak query, tak criteria.
> >>
> >> Pet
>
>>
> >> Lukas Barton wrote:
> >>
>
>>> Burdik Petr wrote:
> >>>
>
>>>> Ahoj,
> >>>> doted jsem pouzival klasicky
query. mam vzdy dva dotazy. Jeden na
> >>>> pocet objektu
vyhovujicich kriteriim a druhy na seznam objektu.
> >>>> Jenom
nevim jak nahradit ten stary count pomoci criteria. Nemate
>
>>>> napad? tech kriterii muze byt vice.
>
>>>>
> >>>> // stary count
>
>>>> String selectCount = "select count(*) from Article article
where
> >>>> article.artIdSupplier like ?"; Integer count =
(Integer)
> >>>> session.createQuery(selectCount)
>
>>>> .setParameter(0,"%" + artIdSupplier +
"%")
> >>>> .uniqueResult();
>
>>>>
>
>>>>
>
>>> Predpokladam, ze bude fungovat neco jako:
>
>>> .createCriteria(Cat.class)
>
>>> .setProjection(
Projections.projectionList().add(
> >>> Projections.rowCount()
).setProjection(
> Projections.projectionList()
>
>>> .add(
Projections.rowCount() )
> >>>
> >>> Vyhodou
Criterii potom je, ze se da pouzit ||*setFirstResult
>
>>>
> <http://www.hibernate.org/hib_docs/v3/api/org/hibernate/Criteria.htm
>
>>> l#setFirstResult%28int%29>
> >>> a
*||*setFetchSize
> >>>
> <http://www.hibernate.org/hib_docs/v3/api/org/hibernate/Criteria.htm
>
>>> l#setFetchSize%28int%29> pro snadne strankovani (teda
>
pokud to umi
> >>> databaze).
> >>>
>
>>> Lukas*
> >>>
>
>>>
> >>>
>
>>
> >>
> >>
> >
>
>
>
>
