【问题标题】:Java persistence date queryJava持久化日期查询
【发布时间】:2011-08-05 02:19:38
【问题描述】:

我有....

string qString = "select e from table where id= :id and trunc(Date) = TO_Date('03/04/2010','MM/DD/YYYY')

Query newQuery = entityManager.createNamedQuery(qstring)
newQuery.setParameter("id",id);

如何设置日期部分而不是硬编码?

我试过了 newQuery.setParameter("date",date,TemporalType.Date) 但它对我不起作用。任何指针? 我也尝试只使用 'newQuery.setParameter("date",date)' 并使用 date 作为参数结束我...

string qString = "select e from table where id= :id and trunc(Date) = :date

,但我认为它们的格式不正确,这样做的正确方法是什么?

*UPDATE*** 我正在尝试使用 SQL 日期来执行此操作。会及时向大家发布!!!

【问题讨论】:

  • 您是否尝试过使用数字通配符,例如?1
  • 什么是数字通配符?我没听说过它是如何工作的?
  • em.createQuery("from table where id = ?1").setParameter(1, id)
  • 嗯,我不需要它作为 id,而是我需要它作为日期!

标签: java persistence


【解决方案1】:

像查询一样将它们存储在字符串中有什么问题??

String date = '03/04/2010';
String dateFormat = 'MM/DD/YYYY';

String qString = "SELECT e FROM table WHERE id = :id 
AND trunc(DATE) = TO_Date(date,dateFormat)";

【讨论】:

  • 正确,这会起作用,但我认为有更好的方法可以做到这一点,我觉得好的做法可以让你学到更多。我可以那样做,但感觉不对
  • 我认为这比硬编码值更好。如果要更改值,请在文件顶部更改一次,然后在引用它们的每个地方都更改它们。
  • 我同意这比传入硬编码值更好,但我宁愿通过设置参数传入纯日期而不是传入字符串。你不同意处理持久性更可行吗?
  • Anywho,我所做的是你的方式,但我仍然会尝试找出更好的方法!!!!
猜你喜欢
  • 2013-02-12
  • 2017-04-07
  • 1970-01-01
  • 2014-11-03
  • 2011-08-03
  • 1970-01-01
  • 2018-04-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多