Ich verwende Spring-Daten, QueryDSL und MySQL.Anfrage queryDSL Prädikat für oneTomany Beziehung Abfrage schreiben
Das Hauptziel der Frage ist zu wissen, wie man eine solche Abfrage in QueryDSL Weg macht. Ein gegebenes Beispiel ist nur ein einfaches Beispiel, um eine Idee zu geben.
Sagen Sie zum Beispiel gibt es zwei Tabellen Mitarbeiter und Zertifikat. Die Beziehung zwischen beiden ist, ONE (Mitarbeiter) zu vielen (Zertifikat)
Tabellen Im Folgenden sind,
Employee (id, first_name, last_name);
Certificate (id, name, date, fk_emp);
Was
mit Namen alle Mitarbeiter zurückkehrend enthält (in first_name das QueryDSL Prädikat für sein sollte und last_name) und von diesem Ergebnis, dessen Zertifizierung zwischen Datum 22-12-2014 bis 22-12-2015
Ich versuchte es, konnte aber nicht bekommen, wie ich über jedes Zertifikat jedes Angestellten in der QueryDSL Weise und der Rückkehrliste von Angestellten iterieren kann.
Ihre Antwort wird sehr geschätzt werden !!
EDIT
Im Folgenden sind die Einheiten,
@Entity
@Table(name = "EMPLOYEE")
class Employee {
@Id
@Column(name = "ID")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
@Column(name = "FIRST_NAME")
private String firstName;
@Column(name = "LAST_NAME")
private String lastName;
@OneToMany(mappedBy = "employee", cascade = CascadeType.ALL)
private List<Certificate> certificates = new ArrayList<>();
}
@Entity
@Table(name = "CERTIFICATE")
class Certificate {
@Id
@Column(name = "ID")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
@Column(name = "CERTIFICATE_NAME")
private String certificateName;
@Column(name = "DATE")
private Date date;
@ManyToOne
@JoinColumn(name = "REF_EMPLOYEE")
private Employee employee;
}
meine Antwort aktualisiert See. Das generierte SQL ist ziemlich hässlich, sieht aber so aus, als ob es funktioniert. –