tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
3
ZUGRIFFE
1527
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Christopher0308 Christopher0308 ist offline Grünschnabel
    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)
     

  2. #2
    Avatar von DerGrinsemann
    DerGrinsemann DerGrinsemann ist offline Mitglied Silber
    Registriert seit
    May 2007
    Ort
    Wien
    Beiträge
    52
    Hi!

    Poste mal deine Mappings! Die Glaskugel ist heute wieder so trüb

    Marco
     

  3. #3
    Avatar von Oliver Gierke
    Oliver Gierke Oliver Gierke ist offline Mitglied Rubin
    Registriert seit
    Dec 2003
    Ort
    Mannheim
    Beiträge
    1.457
    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

  4. #4
    Christopher0308 Christopher0308 ist offline Grünschnabel
    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

  1. Referentielle Integrität zwischen Tabellen und DB-Entwurf (How to)
    Von WiZdooM im Forum Relationale Datenbanksysteme
    Antworten: 4
    Letzter Beitrag: 25.03.09, 15:44
  2. Referentielle Integrität unter SQL Server 2005 deutsch
    Von Colt71 im Forum Relationale Datenbanksysteme
    Antworten: 0
    Letzter Beitrag: 11.07.06, 17:03
  3. referentielle Integrität
    Von Prediger im Forum Relationale Datenbanksysteme
    Antworten: 1
    Letzter Beitrag: 19.03.05, 20:14
  4. Access: referentielle Integrität
    Von luke612 im Forum Relationale Datenbanksysteme
    Antworten: 2
    Letzter Beitrag: 10.02.05, 13:17