0
Ich habe ein Java-Projekt, das eine Entität mit einer LocalDateTime enthält. Ich möchte Datensätze über SQL extrahieren, wobei die LocalDateTime zwischen zwei anderen LocalDateTime liegt.JPA LocalDateTime Vergleich SQL
ENTITY
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(nullable = false)
private long id;
@Basic(optional = false)
@Column(nullable = false)
private long assignmentId;
@Basic(optional = false)
@Column(nullable = false)
private LocalDateTime startDateTime;
@Basic(optional = false)
@Column(nullable = false)
private LocalDateTime endDateTime;
JAVA
//Sub assignments
public List<Subassignment> findAllSubassignmentsForAssignmentBetweenDates(long id, LocalDateTime startDateTime, LocalDateTime endDateTime) {
return getEntityManager().createNamedQuery("ResourceVO.findByAssignmentIdAndDates", Subassignment.class)
.setParameter("id", id)
.setParameter("sdt", startDateTime)
.setParameter("edt", endDateTime)
.getResultList();
}
QUERY
<named-query name='ResourceVO.findByAssignmentIdAndDates'>
<query>
SELECT c FROM Subassignment AS c
WHERE (c.assignmentId IN (SELECT b.id FROM Assignment b WHERE b.resource.id = :id))
AND (c.startDateTime BETWEEN :sdt AND :edt)
</query>
</named-query>
ich immer bin immer ein ‚Internal Serve r Fehler '. Irgendwelche Tipps oder Vorschläge?
P.S. Die Abfrage funktioniert problemlos ohne die LocalDateTime-Parameter.
Dank
Matthijs
jede Ausnahme eine Stack-Trace hat, und eine Ursache. Jede Abfrage schlägt entweder vor der Ausführung fehl oder schlägt mit der Ausführung fehl. In diesem Fall würde sie die aufgerufene SQL protokollieren ... – DN1
Sie können LocalDateTime nicht einfach in einer SQL-Abfrage verwenden. Sie müssen es in java.sql.date konvertieren, damit es funktioniert. Vielleicht würde ein normales Datum auch funktionieren, aber ich bin mir da nicht sicher. –
Aber kann ich sie mit den LocalDateTime vergleichen? –