-->
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.  [ 3 posts ] 
Author Message
 Post subject: Denkfehler?
PostPosted: Fri Aug 05, 2005 10:23 am 
Newbie

Joined: Fri Aug 05, 2005 9:55 am
Posts: 9
Hallo,

Ich habe erfolgreich mein Datenmodell gemapped:
Image
Allerdings sind Order und Incident noch nicht miteinander gemapped - was auch nicht notwendig ist.

IncidentType und IncidentSeverity sind nur statische Kategorien. IncidentType legt dann durch die Verknüpfung die IncidentSeverity fest.

Funktioniert alles soweit. Mein Programm arbeitet wie folgt:
    -> Orders abrufen + checken
    -> Incident erstellen mit IncidentType (Bsp. Integer(3))
    -> Incident-Objekt an aufrufende Instanz zurückliefern
    -> Diese Instanz braucht Informationen des IncidentSeverity-Objektes


So, und da hakt's bei mir. Wenn ich ein Incident erstelle und in die Datenbank zurückschreibe - müsste dann nicht mein Incident-Objekt, abhängig vom IncidentType, auch ein IncidentSeverity gefült zurückbekommen?

Momentan ist es so, wenn ich mir das Objekt IncidentSeverity holen will ich in einen NullPointer laufe.

Muss ich das anders mappen, dass ich sich das IncidentSeverity-Objekt füllt oder geht das einfach nicht und ich muss nach dem Erstellen eines Incidents mir den Incident mit allen Abhängigkeiten nochmal aus der DB holen?

Ich hoffe ich hab das verständlich rüberbringen können. :o)

Danke und ein schönes Wochenende!
Zwitsch

Hibernate version: 3

Name and version of the database you are using: MSSQL 2000


Top
 Profile  
 
 Post subject:
PostPosted: Sun Aug 07, 2005 8:25 am 
Newbie

Joined: Wed Mar 16, 2005 11:06 am
Posts: 10
So wie ich Dich verstehe, weist Du dem neuen Incident Objekt eine neue, von Dir erstellte, IncidentType Instanz zu, etwas so:

// session holen, transaction starten
Incident i = new Incident();
i.setType(new IncidentType(3));
session.save(i);

Beim save() wird IMHO ein ein neuer IncidentType angelegt und nicht ein evtl. bestehender aus der DB geholt. Darum hat der auch kein IncidentSeverity Objekt, weil Du es ja nicht angelegt hast.

Ich weiß nicht, ob Hibernate das überhaupt kann. Also entscheiden, ob IncidentType neu angelegt werden muss oder eine evtl. bestehende Instanz aus der DB holen. Ich bin aber recht sicher, dass Hib das nicht kann.

Du musst wohl die IncidentType Instanz vorher aus der DB holen und dann i zuweisen.

// session holen, transaction starten
IndidentType type = session.get(IncidentType.class, 3);
Incident i = new Incident();
i.setType(type);
session.save(i);

Im Grunde kannst Du solche "Enum" Typen beim App-Start auslesen und die Instanzen beibehalten, falls Du sicher bist, dass sie sich in der DB nicht ändern.

Gruß
Sebastian


Top
 Profile  
 
 Post subject:
PostPosted: Mon Aug 08, 2005 2:44 am 
Newbie

Joined: Fri Aug 05, 2005 9:55 am
Posts: 9
Hallo sebbo,
danke für die Antwort, genau das habe ich gemeint. Dann werde ich wohl erst diese Listen aus der DB holen.

Dankeschön!
Zwitsch


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