Hallo an die Community !
Ich habe meine erste Applikation nun mit Hibernate angefangen und habe auch gleich mal ein kleines Problem. Ich benutze folgendes:
Hibernate version: 3.2 beta 8
Java Version 1.4
Mapping documents:
TableOriginalManu.hbm.xml:
Code:
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.***.ma.hibernate">
<class name="TableOriginalManu" table="TABLE_ORIGINAL_MANU">
<id name ="id" column="ID" >
<generator class="native">
</generator>
</id>
</class>
</hibernate-mapping>
TManu.hbm.xml:
Code:
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.***.ma.hibernate">
<class name="TManu" table="T_MANU">
<id name ="id" column="ID" >
<generator class="native">
</generator>
</id>
<property name ="originalId" column ="ORIGINAL_ID" type ="long" />
</class>
</hibernate-mapping>
Hier erfolgt das speichern der Id der einen Tabelle auf die andere
Code:
Session s = HibernateUtil.currentSession();
Transaction tx= s.beginTransaction();
// Hole die id des gewählten Datensatzes aus dem request
Long loId = new Long(id);
// Speicherung des Original Datensatzes von T_Manu
// nach Table_Original_Manu.
TManu ma = (TManu) s.load(TManu.class, loId); <-- Lade ma Objekt mit der loID
TableOriginalManu ori = new TableOriginalManu(); <-- Erzeuge neues ori Objekt
ori.setOriginalId(loId); <-- und setze oriID gleich loID
s.saveOrUpdate(ori);
// Speichere in TManu die geänderten Kennzahlen
ma.setOriginalId(ori.getId()); <-- Hier bricht er ab mit der Fehlermeldung
s.saveOrUpdate(ma);
tx.commit();
Und dabei erhalte ich folgende Fehlermeldung:
Code:
javax.servlet.ServletException: Null value was assigned to a property of primitive type setter of com.***.ma.hibernate.TManu.originalId
org.apache.struts.action.RequestProcessor.processException(RequestProcessor.java:535)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:433)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
com.dreba.ma.start.AuthorisationFilter.doFilter(AuthorisationFilter.java:59)
com.dreba.ma.start.AuthenticationFilter.doFilter(AuthenticationFilter.java:73)
root cause
org.hibernate.PropertyAccessException: Null value was assigned to a property of primitive type setter of com.***.ma.hibernate.TManu.originalId
org.hibernate.property.BasicPropertyAccessor$BasicSetter.set(BasicPropertyAccessor.java:46)
org.hibernate.tuple.entity.AbstractEntityTuplizer.setPropertyValues(AbstractEntityTuplizer.java:337)
org.hibernate.tuple.entity.PojoEntityTuplizer.setPropertyValues(PojoEntityTuplizer.java:200)
org.hibernate.persister.entity.AbstractEntityPersister.setPropertyValues(AbstractEntityPersister.java:3417)
org.hibernate.engine.TwoPhaseLoad.initializeEntity(TwoPhaseLoad.java:129)
org.hibernate.loader.Loader.initializeEntitiesAndCollections(Loader.java:842)
org.hibernate.loader.Loader.doQuery(Loader.java:717)
org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:224)
org.hibernate.loader.Loader.doList(Loader.java:2144)
org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2028)
org.hibernate.loader.Loader.list(Loader.java:2023)
org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:393)
org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:338)
org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:172)
org.hibernate.impl.SessionImpl.list(SessionImpl.java:1121)
org.hibernate.impl.QueryImpl.list(QueryImpl.java:79)
com.dreba.ma.struts.RctAction.execute(RctAction.java:68)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
com.dreba.ma.start.AuthorisationFilter.doFilter(AuthorisationFilter.java:59)
com.dreba.ma.start.AuthenticationFilter.doFilter(AuthenticationFilter.java:73)
note The full stack trace of the root cause is available in the Apache Tomcat/5.0.28 logs.
Ich benutze die Oracle Datenbank 9i
Außerdem habe ich hibernate.cglib.use_reflection_optimizer auf false gesetzt!
Hat mir vielleicht jemand sagen was ich da falsch mache?
Gruß
Batok