[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
Re: [eclipselink-users] (bug?) counting results gives a cartesian product in 2.3.3
|
You cannot use the restriction from one query in another. You restriction
will be based on a different entityRoot , so you end up with two entityRoots
as expected.
You have the build the where using the correct entityRoot from the query
that you are building.
ymajoros-2 wrote:
>
> Hello,
>
> After upgrading to 2.3.3, I get a cartesian product. It could have been
> the same in 2.3.2, but I didn't notice it then.
>
> Here is a method which counts the total results of query (for pagination):
>
> public <T> Long countCriteriaQueryResults(CriteriaQuery<T>
> selectQuery) {
> CriteriaBuilder builder = entityManager.getCriteriaBuilder();
>
> CriteriaQuery<Long> countQuery = builder.createQuery(Long.class);
> Class<T> resultType = selectQuery.getResultType();
> Root<T> entityRoot = countQuery.from(resultType);
> Expression<Long> countExpression =
> builder.countDistinct(entityRoot);
> countQuery.select(countExpression);
> countQuery.where(selectQuery.getRestriction());
>
> return entityManager.createQuery(countQuery).getSingleResult();
> }
>
> It results in this, for example:
>
> SELECT COUNT(DISTINCT(t0.ID)) FROM client t0, client t1 WHERE
> ((t1.FIDUCIAIRE_ID = ?) = ?)
>
> I'd rather want this:
>
> SELECT COUNT(DISTINCT(t1.ID)) FROM client t1 WHERE ((t1.FIDUCIAIRE_ID =
> ?) = ?)
>
> Is it a bug in Eclipselink or is my code wrong?
>
> Is it ok to use the previous predicates with query.getRestriction()?
>
> Best regards,
>
> Yannick Majoros
> _______________________________________________
> eclipselink-users mailing list
> eclipselink-users@xxxxxxxxxxx
> https://dev.eclipse.org/mailman/listinfo/eclipselink-users
>
>
-----
http://wiki.eclipse.org/User:James.sutherland.oracle.com James Sutherland
http://www.eclipse.org/eclipselink/
EclipseLink , http://www.oracle.com/technology/products/ias/toplink/
TopLink
Wiki: http://wiki.eclipse.org/EclipseLink EclipseLink ,
http://wiki.oracle.com/page/TopLink TopLink
Forums: http://forums.oracle.com/forums/forum.jspa?forumID=48 TopLink ,
http://www.eclipse.org/forums/index.php?t=thread&frm_id=111&S=1b00bfd151289b297688823a00683aca
EclipseLink
Book: http://en.wikibooks.org/wiki/Java_Persistence Java Persistence
Blog: http://java-persistence-performance.blogspot.com/ Java Persistence
Performance
--
View this message in context: http://old.nabble.com/%28bug-%29-counting-results-gives-a-cartesian-product-in-2.3.3-tp33751158p33763375.html
Sent from the EclipseLink - Users mailing list archive at Nabble.com.