-->
These old forums are deprecated now and set to read-only. We are waiting for you on our new forums!
More modern, Discourse-based and with GitHub/Google/Twitter authentication built-in.

All times are UTC - 5 hours [ DST ]



Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 5 posts ] 
Author Message
 Post subject: Problem mit Collection
PostPosted: Tue Dec 06, 2005 6:45 pm 
Newbie

Joined: Tue Dec 06, 2005 6:35 pm
Posts: 3
OK, ich nehme an, dass ich hier irgendwas ganz simples falsch mache - aber ich bin leider neuer Benutzer von Hibernate...

Ich habe einige daten in die beiden Klassen gespeichert, aber die Collection wird nicht von Hibernate gefüllt.

Verwende folgenden Code:
Code:
           List vats = session.createQuery("from VATCode").list();
            for (Iterator iter = vats.iterator(); iter.hasNext();) {
                VATCode element = (VATCode) iter.next();
                logger.info(element.getName());
                element = (VATCode)session.get(VATCode.class,new Integer(element.getVatId()));
                element.getCurrentVATRate();
                if (element.getVatRate().isEmpty())
                    {
                    logger.warn("Empty");
                    }
            }

Ergebinss: der element name kommt richtig zurück, aber die Collection ist und bleibt empty...

Hibernate version: 3

Mapping documents:
Code:
   <class name="net.sf.accounting.setup.VATCode" table="vat_code">
      <id name="vatId" unsaved-value="null">
         <column name="id"/>
         <generator class="native"/>
      </id>
      <property name="active" column="active" not-null="true" update="true" insert="true"/>
      <property name="name" column="name" not-null="true" update="true" insert="true" unique="true"/>
      <set name="vatRate" inverse="true" cascade="all,delete-orphan">
         <key column="vat_code_id"/>
         <one-to-many class="net.sf.accounting.setup.VATRate"/>
      </set>
   </class>
   <class name="net.sf.accounting.setup.VATRate" table="vat_rate">
      <id name="vatRateId" unsaved-value="null">
         <column name="id"/>
         <generator class="native"/>
      </id>
      <property name="rate" column="rate" not-null="true" insert="true" update="true"/>
      <property name="validFrom" column="valid_from" not-null="true" insert="true" update="true"/>
      <property name="validTo" column="valid_to" not-null="false" insert="true" update="true"/>
      <property name="vatCodeId" column="vat_code_id" not-null="false" insert="false" update="false"/>
      <many-to-one name="vatCode" column="vat_code_id" not-null="false"/>
   </class>


Danke im Vorraus


Top
 Profile  
 
 Post subject:
PostPosted: Wed Dec 07, 2005 7:09 am 
Beginner
Beginner

Joined: Mon Oct 24, 2005 9:46 am
Posts: 22
Location: Germany
ich rate mal ein wenig ins blaue:

probier mal die property "vatCodeId" rauszunehmen und bei der many-to-one die Class zu setzen.


was soll eigentlich die Zeile
Code:
element = (VATCode)session.get(VATCode.class,new Integer(element.getVatId()));
bezwecken? du hast das Objekt doch schon?


Top
 Profile  
 
 Post subject:
PostPosted: Thu Dec 08, 2005 7:24 am 
Newbie

Joined: Tue Dec 06, 2005 6:35 pm
Posts: 3
towe wrote:
ich rate mal ein wenig ins blaue:

probier mal die property "vatCodeId" rauszunehmen und bei der many-to-one die Class zu setzen.


was soll eigentlich die Zeile
Code:
element = (VATCode)session.get(VATCode.class,new Integer(element.getVatId()));
bezwecken? du hast das Objekt doch schon?


Also, ich habe das jetzt mal ausprobiert, aber es funktioniert noch nicht so wirklich. Das ich das Objekt noch mal hole, war nur test-code...

Wenn ich ein Object in die Collection packe, wird das nicht in die DB gespeichert, und wenn ich beim Child das Parent speichere, wird die Collection nicht gefüllt...


Top
 Profile  
 
 Post subject:
PostPosted: Thu Dec 08, 2005 7:34 am 
Expert
Expert

Joined: Tue Oct 05, 2004 9:45 am
Posts: 263
schau Dir mal in der Hibernate-Referenz-Doc das Kapitel "7.3.2 Bidirectional associations" an.

Das sieht, inkl. der Schlüssel die Du verwendest, ein wenig anders aus. Versuchs mal ...

HiH
curio


Top
 Profile  
 
 Post subject:
PostPosted: Mon Dec 12, 2005 6:46 pm 
Newbie

Joined: Tue Dec 06, 2005 6:35 pm
Posts: 3
7.3.2 macht das mit Join Tables. Muss ich eine join-table benutzen? Ich finde den Fehler einfach nicht. Habe noch mal einen Test programmiert - der auch nicht will. Ich glaube, ich mache irgendetwas grundlegend falsch....

Mapping:
Code:
<hibernate-mapping>
   <class name="com.abich.hibernate.Event" table="EVENTS">
      <id name="id" column="EVENT_ID">
         <generator class="increment"/>
      </id>
      <property name="date" type="timestamp" column="EVENT_DATE"/>
      <property name="title" column="title"/>
      <set name="nextEvents" inverse="true" cascade="all" >
         <key column="parent_id" on-delete="cascade"/>
         <one-to-many class="com.abich.hibernate.Event" not-found="exception" embed-xml="true"/>
      </set>
      <many-to-one column="parent_id" name="parentEvent" not-null="true"/>
   </class>
</hibernate-mapping>



Code:
Code:
package com.abich.hibernate;

import org.apache.log4j.Logger;

import java.util.Date;

import org.hibernate.Session;
import org.hibernate.Transaction;


public class EventManager {
   /**
    * Logger for this class
    */
   private static final Logger logger = Logger.getLogger(EventManager.class);

   public static void main(String[] args) {
      if (logger.isDebugEnabled()) {
         logger.debug("main(String[]) - start"); //$NON-NLS-1$
      }

      EventManager mgr = new EventManager();

      if (args.length == 0 || args[0].equals("store")) {
         Event eve1 = mgr.createAndStoreEvent("My Event", new Date());
         Event eve2 = mgr.createAndStoreEvent("t2 Event",new Date());
         relate(eve1, eve2);
      }

      if (logger.isDebugEnabled()) {
         logger.debug("main(String[]) - end"); //$NON-NLS-1$
      }
   }

   private static void relate(Event eve1, Event eve2) {
      if (logger.isDebugEnabled()) {
         logger.debug("relate(Event, Event) - start"); //$NON-NLS-1$
      }

      Session session = HibernateUtil.currentSession();
      Transaction tx = session.beginTransaction();
      eve2.getNextEvents().add(eve1);
      Event eve = new Event();
      eve.setTitle("kdbndn");
      eve.setDate(new Date());
      eve2.getNextEvents().add(eve);
      if (logger.isDebugEnabled()) {
         logger.debug("relate(Event, Event) - Event eve2=" + eve2); //$NON-NLS-1$
      }

      tx.commit();

      if (logger.isDebugEnabled()) {
         logger.debug("relate(Event, Event) - end"); //$NON-NLS-1$
      }
   }

   private Event createAndStoreEvent(String title, Date theDate) {
      if (logger.isDebugEnabled()) {
         logger.debug("createAndStoreEvent(String, Date) - start"); //$NON-NLS-1$
      }

      Session session = HibernateUtil.currentSession();
      Transaction tx = session.beginTransaction();

      Event theEvent = new Event();
      theEvent.setTitle(title);
      theEvent.setDate(theDate);

      session.save(theEvent);

      tx.commit();

      if (logger.isDebugEnabled()) {
         logger.debug("createAndStoreEvent(String, Date) - end"); //$NON-NLS-1$
      }
      return theEvent;
   }
}


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 5 posts ] 

All times are UTC - 5 hours [ DST ]


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
© Copyright 2014, Red Hat Inc. All rights reserved. JBoss and Hibernate are registered trademarks and servicemarks of Red Hat, Inc.