Ich habe 2 Beziehungen mit Beziehung OneToMany.Kriterien Builder JoinSet Holt Objekt statt Set von Objekten
@Entity
public class Table1 implements Serializable {
@Id
private Long id;
private String field1;
private String field2;
private String field3;
@OneToMany
@JoinColumn(name = "table1_id")
private Set<Table2> tables2;
}
@Entity
public class Table2 {
@Id
private Long id;
private String field1;
}
Ich möchte Daten von Tabelle 1 holen, um zusätzliche Objekt mit Kriterien Table1Trimmed Builder
public class Table1Trimmed {
private Long id;
private Set<Table2> tables2;
public Table1Trimmed(Long id, Set<Table2> tables2) {
this.id = id;
this.tables2 = tables2;
}
}
ich es tue, wie diese
CriteriaQuery<Table1Trimmed> cq = criteriaBuilder.createQuery(Table1Trimmed.class);
Root<Table1> table1Root = cq.from(Table1.class);
SetJoin<Table1, Table2> tables2Join = table1Root.joinSet("tables2");
cq.select(criteriaBuilder.construct(Table1Trimmed.class, table1Root.get("id"), tables2Join));
List<Table1Trimmed> tables1Trimmed = em.createQuery(cq).getResultList();
Aber wenn ich meine app leite ich erhalten Dieser Fehler
java.lang.NoSuchMethodException: Table1Trimmed.<init>(java.lang.Long, Table2)
at java.lang.Class.getConstructor0(Class.java:3082)
at java.lang.Class.getConstructor(Class.java:1825)
at org.eclipse.persistence.internal.security.PrivilegedAccessHelper.getConstructorFor(PrivilegedAccessHelper.java:172)
at org.eclipse.persistence.internal.jpa.querydef.CriteriaQueryImpl.populateAndSetConstructorSelection(CriteriaQueryImpl.java:400)
at org.eclipse.persistence.internal.jpa.querydef.CriteriaQueryImpl.select(CriteriaQueryImpl.java:93)
Es bedeutet, dass Framework Objekt der Klasse Table2 in meinem Table1Trimmed-Konstruktor statt Set von Table2-Objekten injizieren möchte. Gibt es eine Möglichkeit, dies mithilfe des Kriterienerstellers zu erreichen?
Sie können kein Feld mit mehreren Werten in einer JPQL oder Criteria Abfrage auswählen (und das ist effektiv, was Sie tun, indem Sie das Konstrukt verwenden). Siehe die JPA-Spezifikation JPQL "BNF" Notation –