0

私はHibernateを完全に機能するように利用するアプリケーションを開発しています。ただし、昨日、データベースの列(コメント日)をからに変更したいと思いましDateDateTime

データベースからすべてのコメントを取得してテーブルに表示するメソッドがあります。ただし、データ型を変更したため、これは機能しなくなりました。

私は何をすべきか?

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)

また、クラス(Hibernateによって生成された)でcommentDateタイプをからDateに変更しようとしましたが、「シンボルが見つかりません」というエラーが表示されることにも注意してください。DateTimeComments

4

2 に答える 2

0

DateTimeは jodatime クラス (右?) であり、hibernate はデータベースのタイムスタンプをすぐにマップすることはできませんDateTime。標準的な動作は、休止状態がオブジェクト ( DateTimeis Serializable) をシリアル化し、それをデータベース上の構造のようなブロブにマップすることです。それはおそらくあなたが望むものではありません。

しかし、非常に簡単な解決策があります。jadira ユーザータイプをプロジェクトに追加します (ドキュメントで説明されているように、休止状態のプロパティをいくつか追加します)。次に、データベースのタイムスタンプからエンティティの jodatime クラスへの直接マッピングを作成します。

于 2013-01-20T08:43:34.730 に答える
0

思わない

new CommentsHelper().getAllComments();

を返しています

List<Comments>

型付けされていないものを返しています

List

.addEntity(Comments.class); が必要です。あなたのHibernateコードで。

session.createSQLQuery("SELECT * FROM Comments Order BY CommentDate")
    .addEntity(Comments.class).list();
于 2013-01-20T06:16:31.227 に答える