2010-10-03 88 views
2

我面对空指针异常休眠:空指针execption

org.hibernate.dialect.function.CastFunction.render(CastFunction.java:11)​​

休眠代码: (“选择DATE_FORMAT (str_to_date(form.dobDate,'%Y%m%d'),'%M(%Y)')as Month“);

+1

每个异常有两个重要的特点 - 消息和堆栈跟踪。你已经省略了第二名。另外 - 你粘贴的是一个查询,而不是'休眠代码'。 – Bozho 2010-10-03 10:08:45

+0

在我看来,dobDate为null,但是Bozho说:没有堆栈跟踪,真的很难理解正在发生的事情。 – 2010-10-03 10:10:24

+0

有堆栈跟踪。显示java.lang.NullPointerException \t org.hibernate.dialect.function.CastFunction.render(CastFunction.java:59) \t org.hibernate.hql.ast.SqlGenerator.endFunctionTemplate(SqlGenerator.java:208) \t org.hibernate作为.hql.antlr.SqlGeneratorBase.methodCall(SqlGeneratorBase.java:2319) \t org.hibernate.hql.antlr.SqlGeneratorBase.simpleExpr(SqlGeneratorBase.java:2691) – singh 2010-10-03 10:18:27

回答

0

没有更多的信息我会猜测,dobDate为空(或形式)。

但是我觉得哟在这里反对谷物。我认为hibernate的目的不是要返回格式正确的字符串。当hibernate正确地将我的Java对象转换为数据库或从数据库转换出来时,我已经很开心。

格式化日期等我更喜欢在Java代码中执行操作,实际上尽可能接近外部世界,在UI中或I/O层中,并将日期保存为日期。这提供了更多的灵活性,我发现它使代码更清洁。

这几样在休眠格式化的东西都与传统的数据库很有用where子句虽然