Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/342.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
Java 休眠当前日期不工作_Java_Hibernate - Fatal编程技术网

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现在在重新编写的问题中提供了更多详细信息。我试过有支架和没有支架。