Frage

Ich bin eine sehr einfache Abfrage zu schreiben, aber ich bin immer doppelte Werte aus irgendeinem Grunde.

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
}

Die pi.getId() gibt doppelte Werte. dh: *9,9,10,10,11,11 etc*

Allerdings läuft diese Abfrage direkt in mysql

SELECT * FROM JBPM_PROCESSINSTANCE J where J.END_ IS NULL

zurück keine doppelten Werte.

Kann mir jemand vor Ort, was falsch ist?

War es hilfreich?

Lösung

Die schnelle workarround wäre ein Distinct Stammentität Ergebnis Transformator zu verwenden.

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

Das ist aber nur ein workarround.

ich ques das Problem zu Ihrem Mapping gehört. Wenn es uns, alle geladenen 1: n-Beziehung von ProcessInstance auf etwas anderes (nennen wir es X), und es gibt mehrere (n) X für ein ProcessInstance, die Sie mehrere ProcessInstance Artikel (n) in der Ergebnisliste für eine einzige bekommen ProcessInstance. -. Ist dies wirklich die Ursache, als der workarround nicht nur ein workarround ist, dann wäre es die Lösung sein

Andere Tipps

I encouter das gleiche Problem wie Sie ..

Dies ist, wie ich es lösen.

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

Mit dieser Einstellung werden alle kehrt die ID, die alle Kriterien erfüllen.

dort, nachdem Sie In Einschränkungen verwenden und führen CriteriaSpecification.DISTINCT_ROOT_ENTITY.

können Sie Ihr Ergebnis in den 2.en Kriterien blättern .. ich diese Hilfe hoffen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top