2011-06-18 33 views
2

我想提出休眠的示例程序遵循本教程: http://www.myeclipseide.com/documentation/quickstarts/hibernateintroduction/決策樣本程序處於休眠

使用反向工程,我已經建立這種方法。 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建議, 現在它給例外: 異常線程「main」 org.hibernate.id.IdentifierGenerationException:IDS該類必須手動分配調用save()之前: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; 
    } 
}