Java 休眠当前日期不工作
我把这个问题重新写了一遍,以澄清问题 我有这样一个实体:Java 休眠当前日期不工作,java,hibernate,Java,Hibernate,我把这个问题重新写了一遍,以澄清问题 我有这样一个实体: @Entity @NamedQueries({ @NamedQuery( name = "myObj.findCurrentUsingFunction", query = "from MyObj where insertDate = current_date() "), @NamedQuery( name = "myObj.findCurrentUsingParamete
@Entity
@NamedQueries({
@NamedQuery(
name = "myObj.findCurrentUsingFunction",
query = "from MyObj where insertDate = current_date() "),
@NamedQuery(
name = "myObj.findCurrentUsingParameter",
query = "from MyObj where insertDate = :currentDate")
})
public class MyObj {
@Id @GeneratedValue @Column
private Long id;
@Column @Temporal(TemporalType.DATE)
private Date insertDate;
/* getter, setter */
}
@NamedQuery(
name = "entity.findCurrent",
query = "from EntityName where insertDate = current_date")
我考试不及格:
@Test
public void findCurrentUsingFunction() throws Exception {
final MyObj myObj = new MyObj();
myObj.setInsertDate(new Date());
final Session session = dao.getSessionFactory().getCurrentSession();
session.saveOrUpdate(myObj);
final Query namedQuery =
session.getNamedQuery("myObj.findCurrentUsingFunction");
final List results = namedQuery.list();
Assert.assertEquals("size",1L, (long) results.size());
}
休眠:从双休眠中选择Hibernate_sequence.nextval:
插入MyObj(insertDate,id)值(?,)休眠:选择
来自MyObj的myobj0_u0.id为id0_0,myobj0_0.insertDate为insertDate0_0
其中myobj0_u0.insertDate=当前日期
java.lang.AssertionError:预期大小:但为:
和通过考试
@Test
public void findCurrentUsingParameter() throws Exception {
final MyObj myObj = new MyObj();
myObj.setInsertDate(new Date());
final Session currentSession = dao.getSessionFactory().getCurrentSession();
currentSession.saveOrUpdate(myObj);
final Query namedQuery =
currentSession.getNamedQuery("myObj.findCurrentUsingParameter");
namedQuery.setDate("currentDate", new Date());
final List results = namedQuery.list();
Assert.assertEquals("size",1L, (long) results.size());
}
方言是:
hibernate.dialogue=org.hibernate.dialogue.Oracle10gDialogue
您正在HSQL语句中使用sql函数,因此它不起作用。移除括号以使用hibernate current_date函数,如下所示:
@Entity
@NamedQueries({
@NamedQuery(
name = "myObj.findCurrentUsingFunction",
query = "from MyObj where insertDate = current_date() "),
@NamedQuery(
name = "myObj.findCurrentUsingParameter",
query = "from MyObj where insertDate = :currentDate")
})
public class MyObj {
@Id @GeneratedValue @Column
private Long id;
@Column @Temporal(TemporalType.DATE)
private Date insertDate;
/* getter, setter */
}
@NamedQuery(
name = "entity.findCurrent",
query = "from EntityName where insertDate = current_date")
或者,我会这样做(事实上,我还将使用创建日期时间变量currentDate)
然后在调用命名查询时传入日期
session.getNamedQuery(findCurrent).setDate("currentDate", currentDate);
或者,您可以使用一个.您正在HSQL语句中使用一个sql函数,因此它不起作用。移除括号以使用hibernate current_date函数,如下所示:
@Entity
@NamedQueries({
@NamedQuery(
name = "myObj.findCurrentUsingFunction",
query = "from MyObj where insertDate = current_date() "),
@NamedQuery(
name = "myObj.findCurrentUsingParameter",
query = "from MyObj where insertDate = :currentDate")
})
public class MyObj {
@Id @GeneratedValue @Column
private Long id;
@Column @Temporal(TemporalType.DATE)
private Date insertDate;
/* getter, setter */
}
@NamedQuery(
name = "entity.findCurrent",
query = "from EntityName where insertDate = current_date")
或者,我会这样做(事实上,我还将使用创建日期时间变量currentDate)
然后在调用命名查询时传入日期
session.getNamedQuery(findCurrent).setDate("currentDate", currentDate);
或者您可以使用。您的超链接已断开。什么不起作用?异常,堆栈跟踪?不是你期望的结果?insertDate的映射是什么?它在数据库中的列类型是什么?它在数据库中的价值是什么?可能是重复的(看一看)我会把问题重新写清楚。你的超链接被破坏了。什么不起作用?异常,堆栈跟踪?不是你期望的结果?insertDate的映射是什么?它在数据库中的列类型是什么?它在数据库中的价值是什么?可能是重复的(看一看),我会把问题重新写清楚。当然,我可以这样做,这就是我正在做的,直到我找到解决方案为止。但问题是为什么current_date()函数对我不起作用。@NimChimpsky:current_date()也是一个HQL函数。请参阅@JB Nizet,不带括号,不带括号。然后,Hibernate参考文档中有一个bug。@JB Nizet现在在重新编写的问题中提供了更多详细信息。我试过有括号和没有括号。当然,我可以这样做,这就是我正在做的,直到我找到解决办法。但问题是为什么current_date()函数对我不起作用。@NimChimpsky:current_date()也是一个HQL函数。请参阅@JB Nizet,不带括号,不带括号。然后,Hibernate参考文档中有一个bug。@JB Nizet现在在重新编写的问题中提供了更多详细信息。我试过有支架和没有支架。