更改Hibernate数据类型



我正在开发一个应用程序,它充分利用了Hibernate的功能。然而,昨天我想把数据库中的一列(评论日期)从Date更改为DateTime

我有一个方法,从数据库中检索所有的评论,并显示在一个表中。然而,自从我改变了数据类型,这就不再工作了。

我该怎么办?

List<Comments> cmts = new CommentsHelper().getAllComments();
    out.println("<table class="tableC"><tr><th class="name" >User</th><th class="date">Date</th><th class="comment">Comment</th></tr>");
    for (Comments c : cmts)
    {

错误在增强的for循环中。

下面是堆栈跟踪:

org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:568)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:470)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
    org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)
root cause
java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to mediatek.Comments
    org.apache.jsp.comments_jsp._jspService(comments_jsp.java:269)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
    org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)

还请注意,我曾试图将commentDate类型从Date更改为DateTimeComments类(由Hibernate生成),但错误"找不到符号"显示。

DateTime是一个jodatatime类(对吗?),hibernate将无法将数据库时间戳映射到DateTime。标准的行为是hibernate序列化对象(DateTimeSerializable)并将其映射到数据库上的blob结构。这可能不是你想要的。

但是有一个非常简单的解决方案:将jadira用户类型添加到您的项目中(并添加一些hibernate属性,如其文档中所述)。然后,您将拥有从数据库时间戳到实体上的jodatatime类的直接映射。

我不认为

new CommentsHelper().getAllComments();

返回

List<Comments>

它返回一个非类型化的

List

需要一个。addentity (Comments.class);在Hibernate代码中。

session.createSQLQuery("SELECT * FROM Comments Order BY CommentDate")
    .addEntity(Comments.class).list();

最新更新