2011-06-18 17 views
2

にサンプルプログラムを作ります。 EventsDAO.java:は、私は、このチュートリアルに従う休止状態にサンプルプログラムを作っています休止状態

public Events findById(com.hibernate.EventsId i) { 
    log.debug("getting Events instance with id: " + i); 
    try { 
     Events instance = (Events) getSession().get(
       "com.hibernate.Events", i); 
     return instance; 
    } catch (RuntimeException re) { 
     log.error("get failed", re); 
     throw re; 
    } 
} 

と、この方法をmakiingメインクラスから呼び出す:

private static void listEvents() 
{ 
    EventsDAO dao= new EventsDAO(); 
    Events events= dao.findById(1); 
    printEvents("Printing User,", events); 
dao.getSession().close(); 
} 

それは上で私にエラーを与える:イベントイベント= dao.findById(1); ここ、私はintを渡しているので。 EventsDAO.javaでは、そのタイプはEventsIDです。

をお勧めします。 surlacとして

示唆、 は、今では例外を与えている:スレッドで 例外「メイン」org.hibernate.id.IdentifierGenerationException:このクラスのIDを手動(保存呼び出す前に割り当てる必要があります):com.hibernate.Events

private static void addEvents() 
{ 
    Events events= new Events(); 
    events.setUid(1); 
    events.setName("abc"); 
    events.setDuration(123); 
    EventsDAO dao= new EventsDAO(); 
    Transaction tx=dao.getSession().beginTransaction(); 
dao.save(events); 
tx.commit(); 
dao.getSession().close(); 
} 

それは、このライン上の例外を与えている。ここで

dao.save(events); 

はEvents.hbm.xmlファイルです:<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Mapping file autogenerated by MyEclipse Persistence Tools -->
<hibernate-mapping>
<class name="com.hibernate.Events" table="EVENTS" schema="APP">
<composite-id name="id" class="com.hibernate.EventsId">
<key-property name="uid" type="java.lang.Long"> <column name="UID" />
</key-property>
<key-property name="name" type="java.lang.String"> <column name="NAME" length="20" />
</key-property>
<key-property name="duration" type="java.lang.Integer"> <column name="DURATION" /> </key-property>
</composite-id>
</class>
</hibernate-mapping>

助けてください。

答えて

0

あなたが複合キーを使用しない限り、IDとして整数を使用してみてください:

public Events findById(java.lang.Integer id) { 
     log.debug("getting Events instance with id: " + id); 
     try { 
      Events instance = (Events) getSession() 
        .get("com.hibernate.Events", id); 
      return instance; 
     } catch (RuntimeException re) { 
      log.error("get failed", re); 
      throw re; 
     } 
    } 
+0

一つの例外も来て、確認してください – user783160

0

tutorialはイベントを呼び出す予定はありませんか?

待機 - 今問題が発生しました。チュートリアルはRose Indiaからのものです。私はソースに固執し、JBossのHibernateチュートリアルを使用します。

import java.util.Date; 

public class Event { 
    private Long id; 

    private String title; 
    private Date date; 

    public Event() {} 

    public Long getId() { 
     return id; 
    } 

    private void setId(Long id) { 
     this.id = id; 
    } 

    public Date getDate() { 
     return date; 
    } 

    public void setDate(Date date) { 
     this.date = date; 
    } 

    public String getTitle() { 
     return title; 
    } 

    public void setTitle(String title) { 
     this.title = title; 
    } 
}