許多事情都不是你的問題清楚。然而,嘗試添加TemporalType.DATE到您的查詢,像:
.. query.setParameter(0, getStartDate(), TemporalType.DATE);
基本上,JPA需要知道你正在使用過濾日期字段的記錄。如果我可以演示使用更精細的例子:如果你的實體類是記錄和@Id是現場的startDate,則:
@Entity
@NamedQuery(name="Record.findByStartDate",
query="SELECT e FROM Record e" // here returning the whole entity
+ " WHERE e.startDate = :startDate")
@Table(name="records")
public class Record implements Serializable {
@Id
@Column(name="startDate")
@Temporal(TemporalType.DATE)
private Date startDate;
...
}
與檢索查詢的方法是這樣的:
public Record findByStartDate (Date startDate) {
try {
return (Record) em.createNamedQuery("Record.findByStartDate")
.setParameter("startDate", startDate, TemporalType.DATE)
.getSingleResult();
} catch (NoResultException e) {
return null;
}
}
不,我沒有使用時間數據類型,因爲我有存儲日期和時間 –
「時空」在這裏指的是時間,而不是該字段是暫時的。 – nkmuturi