-->
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.  [ 4 posts ] 
Author Message
 Post subject: Referenzierte Objekte bei save / update nicht überschreiben
PostPosted: Thu Jun 08, 2006 5:44 pm 
Regular
Regular

Joined: Thu Jun 08, 2006 5:32 pm
Posts: 52
Hi,
Einführung:
In meiner Anwendung gibt es folgende Klassen:
VOKunde = representiert einen Kunden,
VOZimmer = representiert ein Zimmer,
VOReservierung representiert eine Reservierung

Zu einer Reservierung gehört genau ein Kunde und ein Zimmer. Wenn ich eine Reservierung neu anlege [session.save(...)] oder aktualisiere [session.update(...)], sollen die referenzierten Objekte VOKunde und VOZimmer nicht aktualisiert werden (da sie im grunde nicht verändert wurde, und nur wegen der Referenzierung geladen wurden).

Kann mir einer evtl. sagen ob die Möglichkeit besteh das in der Mappingdatei festzulegen, oder hat jemand eine andere Lösung?

thx =)

Hibernate version: 3

Mapping documents:

<class name="lg.vo.VOReservierung" table="VOReservierung">
<id name="oid" type="int" column="OID" >
<generator class="increment"/>
</id>

<many-to-one name="kunde" column="ID_KUNDE" class="lg.vo.VOKunde"/>

<many-to-one name="zimmer" column="ID_ZIMMER" class="lg.vo.VOZimmer"/>
</class>

Name and version of the database you are using: MySQL 4.1


Top
 Profile  
 
 Post subject: mutable=false
PostPosted: Fri Jun 09, 2006 5:42 am 
Newbie

Joined: Sat Sep 24, 2005 10:44 am
Posts: 12
Location: Berlin, Germany
hi

normalerweise wird beim save oder update nur eine Tabelle gefüllt da das cascade="none" als standart angenommen wird.

Es sollte also genau so funktionieren. Wenn nicht kannst du das Zimmer, bzw. Kunde als nicht veränderbar declarieren: mutable="false"

Dies wird dir aber sicherlich nicht viel helfen. poste doch mal die 3 Klassen.

Was du noch machen solltest:

Code:
<class name="lg.vo.VOReservierung" table="VOReservierung">
<id name="oid" type="int" column="OID" >
<generator class="increment"/>
</id>
<properties name="name" unique="true" >
<many-to-one name="kunde" column="ID_KUNDE" class="lg.vo.VOKunde"/>
<many-to-one name="zimmer" column="ID_ZIMMER" class="lg.vo.VOZimmer" not-null="true" />
</class>
</properties>


martin


Top
 Profile  
 
 Post subject:
PostPosted: Fri Jun 09, 2006 2:42 pm 
Regular
Regular

Joined: Thu Jun 08, 2006 5:32 pm
Posts: 52
hier die drei klassen (stark auf die wesentlichen attribute beschränkt:

VOKunde:
Code:
public class VOKunde extends VOObject {
   
   private int nummer;
   private String name;
   private String vorname;
   private String strasse;
   private String plz;
   private String stadt;
   
   public VOKunde() {}

   public String getName() { return this.name; }

   public void setName(final String i_name) { this.name = i_name; }

   public int getNummer() { return this.nummer; }

   public void setNummer(final int i_nummer) { this.nummer = i_nummer; }

   public String getPlz() { return this.plz; }
   
   public void setPlz(final String i_plz) { this.plz = i_plz; }

   public String getStadt() { return this.stadt; }
   
   public void setStadt(final String i_stadt) { this.stadt = i_stadt; }

   public String getStrasse() { return this.strasse; }

   public void setStrasse(final String i_strasse) { this.strasse = i_strasse; }

   public String getVorname() { return this.vorname; }
   
   public void setVorname(final String i_vorname) { this.vorname = i_vorname; }


VOZimmer:
Code:

public class VOZimmer extends VOObject {

   private String nummer;
   private int anzBetten;
   private int preisProNachtInCent;
   private String beschreibung;
   
   public VOZimmer() {}

   public int getAnzBetten() { return this.anzBetten; }

   public void setAnzBetten(final int i_anzBetten) { this.anzBetten = i_anzBetten; }

   public String getBeschreibung() { return this.beschreibung; }
   
   public void setBeschreibung(final String i_beschreibung) { this.beschreibung = i_beschreibung; }

   public String getNummer() { return this.nummer; }
   
   public void setNummer(final String i_nummer) { this.nummer = i_nummer; }

   public int getPreisProNachtInCent() { return this.preisProNachtInCent; }
   
   public void setPreisProNachtInCent(final int i_preisProNachtInCent) { this.preisProNachtInCent = i_preisProNachtInCent; }   


VOReservierung:
Code:
public class VOReservierung extends VOObject {
   
   private int nummer;
   private Timestamp von;
   private Timestamp bis;
   private Timestamp anreise;
   private Timestamp abreiseOderStorniert;
   private Timestamp rechnungsDatum;
   private int rechnungsSummeInCent;
   private VOKunde kunde;
   private VOZimmer zimmer;
   private List<VOZusatzleistung> zusatzleistung;
   
   public VOReservierung() {}
   
   public Timestamp getVon() { return this.von; }
   
   public void setVon(final Timestamp i_von) { this.von = i_von; }

   public Timestamp getBis() { return bis; }
   
   public void setBis(final Timestamp i_bis) { this.bis = i_bis; }

   public int getNummer() { return this.nummer; }
   
   public void setNummer(final int i_nummer) { this.nummer = i_nummer; }
   
   public Timestamp getRechnungsDatum() { return this.rechnungsDatum; }
   
   public void setRechnungsDatum(final Timestamp i_rechnungsDatum) { this.rechnungsDatum = i_rechnungsDatum; }
   
   public int getRechnungsSummeInCent() { return this.rechnungsSummeInCent; }
   
   public void setRechnungsSummeInCent(final int i_rechnungsSummeInCent) { this.rechnungsSummeInCent = i_rechnungsSummeInCent; }
   
   public Timestamp getAbreiseOderStorniert() { return this.abreiseOderStorniert; }
   
   public void setAbreiseOderStorniert(final Timestamp i_abreiseOderStorniert) { this.abreiseOderStorniert = i_abreiseOderStorniert; }

   public Timestamp getAnreise() { return this.anreise; }
   
   public void setAnreise(final Timestamp i_anreise) { this.anreise = i_anreise; }
   
   public VOKunde getKunde() { return this.kunde; }
   
   public void setKunde(final VOKunde i_kunde) { this.kunde = i_kunde; }
   
   public VOZimmer getZimmer() { return this.zimmer; }
   
   public void setZimmer(final VOZimmer i_zimmer) { this.zimmer = i_zimmer; }

   public List<VOZusatzleistung> getZusatzleistung() { return this.zusatzleistung; }

   public void setZusatzleistung(final List<VOZusatzleistung> i_zusatzLeistung) { this.zusatzleistung = i_zusatzLeistung; }


Top
 Profile  
 
 Post subject:
PostPosted: Sat Jun 10, 2006 12:48 pm 
Regular
Regular

Joined: Thu Jun 08, 2006 5:32 pm
Posts: 52
Code:
<properties name="name" unique="true" >
<many-to-one name="kunde" column="ID_KUNDE" class="lg.vo.VOKunde"/>
...
</class>
</properties>


kannst du mir noch evtl sagen wozu ich das machen sollte? also wozu dient "<properties name="name" unique="true" >" ? ... ist es richtig das der close tag der properies nach dem von class kommt?

THX


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 4 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.