Saya memiliki dua Jalur dengan nama properti yang identik (nama tim dan nama pemimpin tim)
Projections.bean(QTeam.team, team.name, team.leader.name);
gagal dengan
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)
Bagaimana Anda ingin ini diterapkan pada kacang?
Saya hanya ingin nama tim dan nama pemimpin tim, semua properti lainnya harus nol. Bukankah itu alami?
QBean memerlukan kunci properti unik dan tidak mendukung pembuatan properti perantara implisit.
Apakah itu berarti dengan desain saya tidak dapat menggunakan misalnya proyeksi MongoDB untuk properti bersarang dan memproyeksikan dokumen MongoDB ke Java bean?
Anda dapat mengisi kacang bersarang, tetapi Anda harus melakukannya secara eksplisit.
misalnya
Projections.bean(Team.class, team.name,
Projections.bean(Leader.class, team.leader.name).as("leader"))
Dengan asumsi bahwa Leader
adalah jenis objek perantara.
OK mengerti. Terima kasih. Akan lebih baik untuk mendukung sintaks yang lebih ringkas.
Harap pertimbangkan untuk memindahkan ini ke peningkatan atau penutupan.
Komentar yang paling membantu
Anda dapat mengisi kacang bersarang, tetapi Anda harus melakukannya secara eksplisit.
misalnya
Dengan asumsi bahwa
Leader
adalah jenis objek perantara.