Question

Je suis en train d'écrire une requête très simple, mais je reçois des valeurs en double pour une raison quelconque.

Criteria cr = session.createCriteria(ProcessInstance.class, "p")
        .add(Restrictions.isNull("end"));
@Cleanup ScrollableResults sr = cr.scroll(ScrollMode.FORWARD_ONLY);

while (sr.next()) {
    pi = (ProcessInstance) sr.get(0);
    String id = pi.getId(); //Getting duplicate values
}

Le pi.getId() renvoie des valeurs en double. à savoir: *9,9,10,10,11,11 etc*

Toutefois, l'exécution de cette requête directement dans MySQL

SELECT * FROM JBPM_PROCESSINSTANCE J where J.END_ IS NULL

Ne retourne pas les valeurs en double.

spot Quelqu'un peut-il ce qui est faux?

Était-ce utile?

La solution

Le workarround rapide serait d'utiliser un résultat Distinct racine entité Transformer.

...
crit.setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY);
List unique = crit.List();
...

Mais ce n'est un workarround.

Je QUES le problème appartient à votre cartographie. En cas de hâte chargée 1: n relation de ProcessInstance à autre chose (appeler X), et il y a plusieurs (n) X pour une ProcessInstance, la vous obtiendrez plusieurs articles de processInstance (n) dans la liste des résultats pour une seule ProcessInstance. -. Si cela est vraiment la cause, que le workarround est pas seulement un workarround, il serait alors la solution

Autres conseils

J'encouter le même problème que vous ..

Voici comment je l'ai résolu.

Criteria cr = session.createCriteria(ProcessInstance.class, "p")
        .add(Restrictions.isNull("end")).setProjection("id")

retourne volonté tous les ID qui satisfont tous vos critères.

après avoir utilisé les restrictions de In et d'effectuer CriteriaSpecification.DISTINCT_ROOT_ENTITY.

Vous pourrez faire défiler votre résultat dans les critères 2e .. J'espère que cette aide.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top