簡體   English   中英

如何在 JPQL 中創建“findByDate”NamedQuery?

[英]How to create a "findByDate" NamedQuery in JPQL?

我正在嘗試為 Web 服務創建一個@NamedQuery ,以便可以返回具有給定出生日期的客戶列表。

GlassFish 報告以下錯誤:

異常描述:編譯問題 [SELECT c FROM Customer c WHERE c.dob = to_date(:dob, 'dd-Mon-yyyy')]。 [38, 45] 標識變量“to_date”未在 FROM 子句中定義。

@NamedQuery(name = "Customer.findByDob", query = "SELECT c FROM Customer c WHERE c.dob = to_date(:dob, 'dd-Mon-yyyy')")

@GET
    @Path("findByDob/{dob}")
    @Produces({"application/json"})
    public List<Customer> findByDob(@PathParam("dob") String dob) {
        Query q = em.createNamedQuery("Customer.findByDob");
        q.setParameter("dob", dob);
        return q.getResultList(); 
}

非常感謝任何反饋。

您可以在實體管理器中委托從日期到字符串數據庫格式的轉換。 這樣的事情應該有效:

@NamedQuery(name = "Customer.findByDob", query = "SELECT c FROM Customer c WHERE c.dob = :dob")

        @GET
        @Path("findByDob/{dob}")
        @Produces({"application/json"})
        public List<Customer> findByDob(@PathParam("dob") String dob) {
            SimpleDateFormat sdf = new SimpleDateFormat("dd-Mon-yyyy");
            Date dobDate = sdf.parse(dob); //Create a new Java Date object. 

            Query q = em.createNamedQuery("Customer.findByDob");
            q.setParameter("dob", dobDate); //The entity manager will transform the Date to query needs.
            return q.getResultList(); 
    }

暫無
暫無

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

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