Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jpa 使用eclipselink jql从日期中提取年份、月份和日期_Jpa_Eclipselink_Jpql - Fatal编程技术网

Jpa 使用eclipselink jql从日期中提取年份、月份和日期

Jpa 使用eclipselink jql从日期中提取年份、月份和日期,jpa,eclipselink,jpql,Jpa,Eclipselink,Jpql,我正在将primefaces日历中的日期发送给支持bean。primefaces发送的对象是日期 <p:calendar id="exact_Date" value="#{h.model.arhExactDate}" pattern="yyyy/MM/dd"/> 如果成功的话,我希望有这样的东西: extract(year,mounth,day from e.reqDate) =:(exactDate) 我不想要这样的东西: extract(从e.reqDate算起的年份)=:

我正在将primefaces日历中的日期发送给支持bean。primefaces发送的对象是日期

<p:calendar id="exact_Date" value="#{h.model.arhExactDate}" pattern="yyyy/MM/dd"/>
如果成功的话,我希望有这样的东西:

 extract(year,mounth,day from e.reqDate) =:(exactDate)
我不想要这样的东西:
extract(从e.reqDate算起的年份)=:extract(从exactDate算起的年份)和extract(从e.reqDate算起的月份)和extract(从e.reqDate算起的天)=:extract(从exactDate算起的天)

我希望EclipseLink支持以下供应商扩展JPQL功能

MONTH(field)
YEAR(field)
DAY(field)

请注意,这些不是JPA标准,但大多数JPA提供商都支持它们。检查您的提供商的手册。“extract”是一个仅适用于SQL的SQL函数,只能在极少数数据库上使用,因此最好避免使用

,因为您希望传入日期对象并只比较不包括时间部分的日期值,您可以尝试在JPQL中使用TruncateDate或Trunc选项:

"select e from MyEntity e where truncateDate(e.reqDate) = :dateParameter"
TRUNC在大多数数据库上,如果没有提供年/月/日参数,则默认情况下应去掉时间。可以使用JPQL的函数在其他提供程序中访问:

"select e from MyEntity e where FUNCTION('TRUNC', e.reqDate) = :dateParameter"

eclipseLink指南将格式显示为“摘录(年份,e.startDate)”。你的好像不一样。您是否尝试过“从MyEntity e中选择e,其中提取(YEAR,e.reqDate)=:YEAR\u参数”?什么是错误或生成的SQL?
"select e from MyEntity e where FUNCTION('TRUNC', e.reqDate) = :dateParameter"