Ich habe folgende Einheiten:Hibernate
Person.java
@Table(name = persons)
public class Person {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "UserID", nullable = false)
private Long userId;
@Column(name = "Employeenumber", nullable = false) private String employeeNumber;
@Column(name = "Firstname", nullable = false) private String firstName;
@Column(name = "Lastname", nullable = false) private String lastName;
public User() { }
public User(String employeeNumber, String firstName, String lastName) {
super();
this.employeeNumber = employeeNumber;
this.firstName = firstName;
this.lastName = lastName;
}
/*
getter and setters
...
*/
}
Personhistory.java
@Entity
@Table(name = personhistory)
public class Personhistory {
@Id
@Column(name = "UserID", nullable = false)
private Long userId;
@Column(name = "Fromdate", nullable = false) private Date fromDate;
@Column(name = "Todate", nullable = false) private Date toDate;
@Column(name = "TeamID", nullable = false) private Integer teamId;
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "UnikId", nullable = false)
private Integer unikId;
public Userhistory() {
}
public Userhistory(Long userId, Date fromDate, Date toDate, int teamId) {
super();
this.userId = userId;
this.fromDate = fromDate;
this.toDate = toDate;
this.teamId = teamId;
}
/*
Getters and setters
...
*/
}
Team.java
@Entity
@Table(name = "team")
public class Team {
@Id
@Column(name = "TeamID")
@GeneratedValue(strategy = GenerationType.AUTO)
private int teamId;
@Column(name = "TeamNumber") private String teamNumber;
public Team() {}
public Team(String teamNumber) {
super();
this.teamNumber = teamNumber;
}
/*
Getters and setters
...
*/
}
Ich möchte einen API-Aufruf wie folgt machen:
localhost:8080/users/{employee}
Und ein Objekt zurück, welche die Person (His emp-Nummer, Vorname und Nachname), als er im Team war und welche Mannschaft das ist.
Wenn ich diese Abfrage in MSSQL schreiben, würde es so aussehen:
select * from persons p
join personhistory ph on ph.UserID = p.UserID
and ph.Fromdate <= cast(getdate() as date)
and ph.Todate >= cast(getdate() as date)
join team t on t.TeamID = ph.TeamID
where u.Employeenumber = '999'
ich für verschiedene Lösungen wie HQL um gesucht habe, JPQL, Kriterien und so weiter, aber ich bin nicht in der Lage zu Bring es zum Laufen.
Jede Hilfe würde sehr geschätzt werden.
Dank - ich werde diese geben ein Go. –