tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
1
ZUGRIFFE
3277
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    AceTheFace AceTheFace ist offline Mitglied
    Registriert seit
    May 2006
    Beiträge
    20
    Hallo,

    ja der Betreff ist etwas seltsam formuliert, aber ich dachte lieber etwas verwirrend als nur "Hibernate-Problem" *g*

    Aber zum eigentlich Problem:

    Ich entwickle ja gerade ein pluginbasiertes Framework welches nach langem hin und her nun Hibernate als Persistenzlösung einsetzt. Mein Framework verwaltet die User und Gruppen mithilfe des folgenden Interfaces:

    Code java:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    
    public interface Rights {
        void addRights(Rights r);
        Set<Rights> getRights();
        void setRights(Set<Rights> rights);
        void setId(Long id);
        Long getId();
        String getName();
        void setName(String name);
        void setParent(Rights parent);
        Rights getParent();
    }

    Dieses Interface wird nun von den Klassen User und Group implementiert, so dass ich das ganze schön rekursiv in einem Baum modellieren kann (Gruppe kann weitere Gruppe oder auch Gruppen und User auf der gleichen Ebene beinhalten => composite-pattern).

    Gemappt habe ich das Interface wie folgt:

    Code xml:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    
    <class name="Rights" table="RIGHTS">
                    <id name="id" type="long" unsaved-value="null">
                        <generator class="native"/>
                    </id>
                    <discriminator column="type" type="string" />
                    <set name="rights" inverse="true" lazy="true" cascade="all-delete-orphan">
                        <key column="parent"/>
                        <one-to-many class="Rights"/>
                    </set>
                    <many-to-one name="parent" column="parent" cascade="save-update" class="Rights"/>
                    <property name="name" type="string" />
                    
                    <subclass name="User" discriminator-value="user">
                    </subclass>     
                    
                    <subclass name="Group" discriminator-value="group">  
                    </subclass>
                </class>

    Das funktioniert auch hervorragend, d.h. ich kann bequem auf dem Interface arbeiten ohne mich konkret darum kümmern zu müssen ob ich es denn nun mit Usern oder Gruppen zu tun habe.

    Das Problem ist nun, dass die Programmierer, die später das Framework benutzen sollen ja vielleicht mehr Informationen zu ihren Usern/Gruppen als nur einen Namen speichern wollen (bspw. email, adresse, geburstdatum etc...). Die müssten nun also direkt in die User/Group-Implementierung eingreifen innerhalb des Frameworks eingreifen. Das ist aber natürlich mehr als unschön.

    Ist es denn möglich z.b. einfach eine Klasse MyUser innerhalb der Anwendung zu schreiben, die die Klasse User aus dem Portal erweitert und dort die weiteren Attribute unterzubringen? Wie müsste ich das denn dann mappen?

    Über Tipps oder andere Vorschläge wäre ich dankbar.

    Gruß,
    Ace
     

  2. #2
    AceTheFace AceTheFace ist offline Mitglied
    Registriert seit
    May 2006
    Beiträge
    20
    Sooo,

    ich hab' das nun einfach von Interface auf Abstrakte Klasse umgestellt, damit geht das dann Problemlos.
    Das Mapping der Subklassen sieht dann z.b. so aus:
    Code xml:
    1
    2
    3
    
     <subclass name="entities.user.MyUser" discriminator-value="myuser" extends="de.portal.permission.User">
                     <property name="street" type="string" />
    </subclass>

    Gruß,
    Ace
     

Ähnliche Themen

  1. Hibernate: 2 Objekte desselben Typs auf 2 versch. Properties der Vaterklasse mappen
    Von DarthShader im Forum Enterprise Java (JEE, J2EE, Spring & Co.)
    Antworten: 5
    Letzter Beitrag: 24.08.10, 15:57
  2. Implementation des OTA-Standards
    Von mC pAiN im Forum PHP
    Antworten: 5
    Letzter Beitrag: 18.08.08, 09:22
  3. XML:DB Implementation
    Von Saxer im Forum Java
    Antworten: 0
    Letzter Beitrag: 07.07.08, 12:55
  4. Hibernate: "Calendar" statt "Date" auf SQL TIMESTAMP mappen?
    Von DarthShader im Forum Enterprise Java (JEE, J2EE, Spring & Co.)
    Antworten: 0
    Letzter Beitrag: 09.05.08, 00:07
  5. Hibernate: value-type als Klasse mappen
    Von Vatar im Forum Java
    Antworten: 0
    Letzter Beitrag: 15.10.07, 12:53