首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Hibernate uniqueResult为空,但不应该为空

Hibernate uniqueResult为空,但不应该为空
EN

Stack Overflow用户
提问于 2015-12-15 09:32:38
回答 1查看 2.5K关注 0票数 2

早上好,

我想做以下几件事:

在更新对象之前,我希望从最后一个记录中检索一个字段,以便将其添加到新行中。所以这就是我所做的

代码语言:javascript
运行
复制
 int idLuce = Integer.parseInt(msg);
 Illuminazione illuminazione = new Illuminazione();
 session.beginTransaction();
 selectQuery = "SELECT dateTime from Illuminazione i where i.idLuce = :idLuce ORDER BY i.dateTime ASC";
 theQuery = session.createQuery(selectQuery).setProperties(illuminazione).setFirstResult(0)
.setMaxResults(1);
 lastDate = (Date) theQuery.uniqueResult();
 logger.debug("last date time is: "+lastDate);
 illuminazione.setLastDateTime(lastDate);
 illuminazione.setIdLuce(idLuce);
 illuminazione.setIsLit(true);
 Date date = new Date();
 illuminazione.setDateTime(new Timestamp(date.getTime()));
 session.save(illuminazione);
 session.getTransaction().commit();

一切如我所料,但lastDate是空的.我没有错误或异常,这是操作的日志。

代码语言:javascript
运行
复制
2015-12-15 10:30:01.157 DEBUG [Thread-2]: HQL: SELECT dateTime from it.besmart.models.Illuminazione i where i.idLuce = :idLuce ORDER BY i.dateTime ASC
2015-12-15 10:30:01.159 DEBUG [Thread-2]: SQL: select illuminazi0_.date_time as col_0_0_ from SMARTPARK.illuminazione illuminazi0_ where illuminazi0_.id_luce=? order by illuminazi0_.date_time ASC
2015-12-15 10:30:01.161 DEBUG [Thread-2]: throwQueryException() : no errors

Hibernate: 
    select
        illuminazi0_.date_time as col_0_0_ 
    from
        SMARTPARK.illuminazione illuminazi0_ 
    where
        illuminazi0_.id_luce=? 
    order by
        illuminazi0_.date_time ASC limit ?
2015-12-15 10:30:01.187 DEBUG [Thread-2]: last date time is: null

2015-12-15 10:30:01.285 DEBUG [Thread-2]: Executing identity-insert immediately
2015-12-15 10:30:01.314 DEBUG [Thread-2]: 
    insert 
    into
        SMARTPARK.illuminazione
        (date_time, id_luce, isLit, last_date_time) 
    values
        (?, ?, ?, ?)
Hibernate: 
    insert 
    into
        SMARTPARK.illuminazione
        (date_time, id_luce, isLit, last_date_time) 
    values
        (?, ?, ?, ?)

显然,如果我在SQL中运行相同的查询,它会工作.

我做错什么了?谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-15 10:14:57

您似乎没有将idLuce传递到查询中。尝尝这个

代码语言:javascript
运行
复制
int idLuce = Integer.parseInt(msg);
session.beginTransaction();
selectQuery = "SELECT dateTime from Illuminazione i where i.idLuce = :idLuce ORDER BY i.dateTime ASC";
theQuery =  session.createQuery(selectQuery).setParameter("idLuce", idLuce).setMaxResults(1);
lastDate = (Date) theQuery.uniqueResult();

或者,在执行查询之前移动illuminazione.setIdLuce(idLuce);行。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34285516

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档