gpt4 book ai didi

java - 如何在 JPQL 中创建 "findByDate"NamedQuery?

转载 作者:行者123 更新时间:2023-11-30 05:43:16 25 4
gpt4 key购买 nike

我正在尝试为网络服务创建一个@NamedQuery,以便可以返回具有给定出生日期的客户列表。

GlassFish 报告以下错误:

Exception Description: Problem compiling [SELECT c FROM Customer c WHERE c.dob = to_date(:dob, 'dd-Mon-yyyy')]. [38, 45] The identification variable 'to_date' is not defined in the FROM clause.

@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();
}

非常感谢任何反馈。

最佳答案

您可以在实体管理器中委托(delegate)从日期到字符串数据库格式的转换。像这样的东西应该有效:

@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();
}

关于java - 如何在 JPQL 中创建 "findByDate"NamedQuery?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55294052/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com