にサンプルプログラムを作ります。 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>
助けてください。
一つの例外も来て、確認してください – user783160