ERLEDIGT
NEIN
NEIN
ANTWORTEN
3
3
ZUGRIFFE
1527
1527
EMPFEHLEN
-
19.09.08 19:13 #1
- Registriert seit
- Sep 2008
- Beiträge
- 2
Hallo!
folgendes Szenario:
eine Tabelle:
Schulung
(PK: SchulungsID)
(Hash)Set Teilnehmer
...
von dieser Tabelle "erben" 2 weitere: Seminare und Workshops (beide haben als PK: SchulungsID)
desweiteren gibts eine Join-Table (Link-Tabelle) SchulungPerson (PK: SchulungsID und PersonID) über die Seminar- und Workshopteilnehmer zugeordnet werden.
Lösche ich nun mit Hibernate ein Seminar/Workshop zu dem noch Personen zugeordnet sind, wird die Referentielle Integrität "ausgehebelt". D.h. zuerst werden alle Einträge mit entsprechender SchulungsID aus der Join-Table gelöscht. Anschließend aus der Schulungstabelle und zum Schluss aus der Seminartabelle.
Ich erwarte eine ConstraintViolationException oder etwas in der Art...
Muss man irgendein Attribut im Mappingfile angeben?
GrußGeändert von Christopher0308 (19.09.08 um 19:19 Uhr)
-
19.09.08 22:35 #2
Hi!
Poste mal deine Mappings! Die Glaskugel ist heute wieder so trüb
Marco
-
20.09.08 10:53 #3
Wenn keine Exception fliegt, kommt das vermutlich daher, dass deine DB die referenzielle Integrität gar nicht prüft. Dass Hibernate dies nicht tu, okay... dass ist sicher ein Mappingproblem. Spätestens in der DB sollte die aber dann für Probleme sorgen. Klassisches Problem ist dabei MySQL mit MyISAM Tabellen anstelle von InnoDB.
Bzgl. der Mappings hat mein Vorposter schon alles gesagt
REINHAUN!In theory, there is no difference between theory and practice. In practice, there is!
www.olivergierke.de
-
20.09.08 21:55 #4
- Registriert seit
- Sep 2008
- Beiträge
- 2
Hi!
ich finds ja schon mal gut, dass sie jmd über mein Problem den Kopf zerbrechen will
Ich wollte euch mein mapping code ersparen, aber wen er gewünscht ist ...
Btw. nutze ich MySql mit InnoDb. Auf Datenbankebene greift die RI auch, sobald ich versuche eine Schulung zu löschen, die noch Teilnehmer hat.
hier ist mein Schulungsmapping (Training).
zur erinnerung: Eine Schulung ist entweder ein Seminar oder ein Workshop (realisert durch joined-subclass)
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
<hibernate-mapping> <class name="transfer.ToTraining" table="training"> <id name="trainingId" type="java.lang.Integer"> <column name="trainingId" /> <generator class="native" /> </id> <property name="from" type="date" column="von" length="10" not-null="true" /> <property name="until" type="date" column="bis" length="10" not-null="true" /> <property name="postcode" type="java.lang.Integer" column="postcode" not-null="true" /> <property name="location" type="string" column="location" length="25" not-null="true" /> <property name="street" type="string" column="street" length="45" /> <property name="status" type="java.lang.Integer" column="status" not-null="true" /> <set name="participants" inverse="false" table="training_person"> <key> <column name="trainingId" not-null="true" /> </key> <many-to-many entity-name="transfer.ToPerson"> <column name="personId" not-null="true" /> </many-to-many> </set> <joined-subclass name="transfer.ToSeminar" table="seminar" > <key column="trainingId" /> <property name="name" type="string" column="name" length="30" not-null="true" /> <property name="content" type="string" column="content" length="65535" not-null="true" /> <property name="seminarcode" type="string" column="seminarcode" length="10" not-null="true" /> <property name="price" type="java.lang.Double" column="price" precision="7" not-null="true" /> <property name="inhouse" type="java.lang.Boolean" column="inhouse" not-null="true" /> <property name="constancy" type="java.lang.Double" column="constancy" precision="3" scale="1" not-null="true" /> <property name="participatorMin" type="java.lang.Integer" column="participator_min" not-null="true" /> <property name="participatorMax" type="java.lang.Integer" column="participator_max" not-null="true" /> </joined-subclass> <joined-subclass name="transfer.ToWorkshop" table="workshop"> <key column="trainingId" /> <many-to-one name="consultant" class="transfer.ToPerson" fetch="select"> <column name="consultant" not-null="true" /> </many-to-one> <many-to-one name="subject" class="transfer.ToSubject" fetch="select"> <column name="subject" not-null="true" /> </many-to-one> </joined-subclass> </class> </hibernate-mapping>
Geändert von Christopher0308 (21.09.08 um 16:05 Uhr)
Ähnliche Themen
-
Referentielle Integrität zwischen Tabellen und DB-Entwurf (How to)
Von WiZdooM im Forum Relationale DatenbanksystemeAntworten: 4Letzter Beitrag: 25.03.09, 15:44 -
Referentielle Integrität unter SQL Server 2005 deutsch
Von Colt71 im Forum Relationale DatenbanksystemeAntworten: 0Letzter Beitrag: 11.07.06, 17:03 -
referentielle Integrität
Von Prediger im Forum Relationale DatenbanksystemeAntworten: 1Letzter Beitrag: 19.03.05, 20:14 -
Access: referentielle Integrität
Von luke612 im Forum Relationale DatenbanksystemeAntworten: 2Letzter Beitrag: 10.02.05, 13:17





Zitieren
Login





