有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java更改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循环中

以下是stacktrace:

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)

还请注意,我试图在Comments类(由Hibernate生成)中将commentDate类型从Date更改为DateTime,但显示了错误“找不到符号”


共 (2) 个答案

  1. # 1 楼答案

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

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

  2. # 2 楼答案

    我不认为

    new CommentsHelper().getAllComments();
    

    正在返回一个

    List<Comments>
    

    它返回了一个未打印的

    List
    

    你需要一个。附录(注释.类);在你的Hibernate代码中

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