簡體   English   中英

如何在JPA查詢中包含大於日期的內容?

[英]how to include a greater than Date in a JPA query?

我有一個基於JPA的項目,如下所示:

@Entity
@Table(name="events")
public class Event implements Serializable {
  @Id
  @GeneratedValue(strategy=GenerationType.AUTO)
  private Long id;
  private String data;
  @Temporal(TemporalType.TIMESTAMP)
  private java.util.Date eventDate;

/* ... getters & setters */
}

在我的DAO中,我這樣做:

public void checkForEvents(String text, java.util.Date myDate) {

  String query = "SELECT e FROM Event e WHERE e.data LIKE '%?1%' AND e.eventDate > ?2";
  Query q = getEntityManager().createQuery(query);
  q.setParameter(1, text);
  q.setParameter(2, myDate);
  q.getSingleResult() /* and so on ... */

}

當我運行DAO代碼時,出現此錯誤:

The parameter "0" is of type "java.lang.String", but the declaration in the query is for type "java.util.Date".

我究竟做錯了什么?

該消息看起來很奇怪,但是錯誤在第一個參數中。 您只能將值作為參數傳遞,因此應將e.data LIKE '%?1%'替換為e.data LIKE ?1 ,並在Java代碼中用% e.data LIKE ?1文本。

我認為這與不能在文字中使用參數(即'%?1%' )有關。

請嘗試以下查詢:

SELECT e FROM Event e WHERE e.data LIKE CONCAT('%', ?1, '%') AND e.eventDate > ?2

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM