Querydsl: Erstellen einer QBean-Projektion mit identischen Pfadnamen

Erstellt am 19. Feb. 2015  ·  6Kommentare  ·  Quelle: querydsl/querydsl

Ich habe zwei Pfade mit identischen Eigenschaftsnamen (team.name und team.leader.name)

Projections.bean(QTeam.team, team.name, team.leader.name);

scheitert mit

java.lang.IllegalArgumentException: Multiple entries with same key: name=team.leader.name and name=team.name
    at com.google.common.collect.ImmutableMap.checkNoConflict(ImmutableMap.java:150)
    at com.google.common.collect.RegularImmutableMap.checkNoConflictInBucket(RegularImmutableMap.java:104)
    at com.google.common.collect.RegularImmutableMap.<init>(RegularImmutableMap.java:70)
    at com.google.common.collect.ImmutableMap$Builder.build(ImmutableMap.java:254)
    at com.mysema.query.types.QBean.createBindings(QBean.java:72)
    at com.mysema.query.types.QBean.<init>(QBean.java:161)
    at com.mysema.query.types.QBean.<init>(QBean.java:95)
    at com.mysema.query.types.Projections.bean(Projections.java:63)

Hilfreichster Kommentar

Sie können verschachtelte Beans auffüllen, müssen dies jedoch explizit tun.

z.B

Projections.bean(Team.class, team.name, 
  Projections.bean(Leader.class, team.leader.name).as("leader"))

Angenommen, Leader ist der Typ des Zwischenobjekts.

Alle 6 Kommentare

Wie sollen diese auf die Bohne aufgetragen werden?

Ich möchte nur den Namen des Teams und den Namen des Teamleiters, alle anderen Eigenschaften sollten null sein. Ist das nicht selbstverständlich?

QBean erfordert eindeutige Eigenschaftsschlüssel und unterstützt keine implizite Zwischeneigenschaftserstellung.

Bedeutet das vom Design her, dass ich beispielsweise die Projektion von MongoDB für verschachtelte Eigenschaften nicht verwenden und das Dokument von MongoDB auf Java Bean projizieren kann?

Sie können verschachtelte Beans auffüllen, müssen dies jedoch explizit tun.

z.B

Projections.bean(Team.class, team.name, 
  Projections.bean(Leader.class, team.leader.name).as("leader"))

Angenommen, Leader ist der Typ des Zwischenobjekts.

OK habe es. Vielen Dank. Wäre schön, eine prägnantere Syntax zu unterstützen.
Bitte ziehen Sie in Erwägung, dies in eine Erweiterung oder Schließung zu verschieben.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen