-->
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: Tabellen-Spalten und Constraints programatisch erstellen
PostPosted: Wed Feb 18, 2009 11:55 am 
Newbie

Joined: Wed Feb 18, 2009 11:44 am
Posts: 3
Hallo!
Ich habe folgendes Problem und komme dabei einfach nicht richtig weiter.
Ich möchte im Prinzip *nur* meine HibernateConfiguration *programatisch*
erweitern. Das klappt aber nur bedingt.

Quote:
<many-to-one class="de.test.platform.TestEntity" fetch="select" name="schwfirma">
<column name="user_id"/>
</many-to-one>

Diesen Block möchte ich als Code verfassen.
Da aber die API unvollständig dokumentiert ist, komme ich einfach nicht weiter.
Ich wäre froh, könnte mir jemand helfen!

So habe ich angefangen:
(Constraints und Spalten werden richtig angelegt, nur habe ich irgendetwas anderes falsch gemacht, sodas ich nun einen Hinweis bekomme (im createSessionFactory) das user_id nicht vorhanden ist)

Code:
        ManyToOne v = new ManyToOne(t);
       
        //v.setTypeName(p_type);
        v.setTable(t);
        v.setFetchMode(FetchMode.SELECT);
        v.setReferencedEntityName("de.test.TestEntity");
        v.setLazy(true);
        v.setUnwrapProxy(false);

        Column col = new Column("user_id");
        col.setNullable(true);
        col.setUnique(false);
        if (p_length != null)
            col.setLength(p_length);

        v.addColumn(col);
        v.setEmbedded(true);
        v.setIdentifierGeneratorStrategy("assigned");
       
        col.setValue(v);

        Column mycol = new Column(colNameInDB);
        mycol.setNullable(true);
        mycol.setUnique(false);
        mycol.setValue(v);
        if (p_length != null)
            mycol.setLength(p_length);

        t.addColumn(mycol);
        List l = new ArrayList<Column>();
        l.add(mycol);
        t.createForeignKey(null,l, "de.test.TestEntity");

        Property p = new Property();
        p.setGeneration(PropertyGeneration.NEVER);
        p.setLazy(false);
        p.setOptional(true);
        p.setValue(v);
        p.setName(fieldName);
        p.setNodeName(fieldName);
        p.setPropertyAccessorName("property");
        p.setCascade("none");
        p.setUpdateable(false);
        p.setInsertable(false);
        p.setSelectable(true);

        p_persistenClass.addProperty(p);


Hat jemand eine Idee, wie man mit den Klassen:
- ManyToOne
- Property
- Column
umzugehen hat?


Top
 Profile  
 
 Post subject:
PostPosted: Wed Feb 18, 2009 12:06 pm 
Expert
Expert

Joined: Thu Jan 08, 2009 6:16 am
Posts: 661
Location: Germany
Also ich hab zwar kein Beispiel für dich, hab es selber noch nicht gemacht, aber ich würde mir irgendwie ein XML-File erstellen (mit Jaxb oder so) und dieses dann der einer Configuration.configure(...) übergeben.

_________________
-----------------
Need advanced help? http://www.viada.eu


Top
 Profile  
 
 Post subject:
PostPosted: Wed Feb 18, 2009 12:23 pm 
Newbie

Joined: Wed Feb 18, 2009 11:44 am
Posts: 3
Danke schonmal für deine Antwort!

also die Hibernate.cfg.xml erstelle ich komplett programatisch.
(Um genau zu sein erstelle ich keine XML-Datei, vielmehr übergebe ich die Properties via:
Quote:
cfg.setProperty("hibernate.jdbc.batch_size", "50");
u.s.w)

Die jeweiligen Mapping-Files sind aber bereits als XML-Datei vorhanden (*.hbm.xml).
Diese füge ich am Ende mit
Code:
cfg.addResource(s);

der Configuration hinzu.

Die Configuration (mit allen mappings) ist soweit vollständig.
(funktioniert auch alles soweit)

Die Config wollte ich nun nochmal *programatisch* erweitern.
- cfg.getClassMappings()
- über diese iteriere ich dann und ergänze die Mappings noch um ein paar Felder (das habe ich auch hinbekommen)

möchte ich aber ein Constraint hinzufügen, dann wirds haarig....da ich keine Ahnung habe was ich wie machen muss.


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.