-->
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.  [ 6 posts ] 
Author Message
 Post subject: Dynamische Tabellenname
PostPosted: Tue Jun 06, 2006 7:54 am 
Newbie

Joined: Tue Jun 06, 2006 7:41 am
Posts: 4
Hallo,

in meiner MySQL-Datenbank pflege ich Tabellen in zwei verschiedenen Sprachen, wo die ID's identisch sind. Je nach Sprachauswahl soll dann der entsprechende Inhalt angezeigt werden. Wie kann ich es hinbekommen, das ich den Namen der Tabelle dynamisch übergeben kann (z. B. an die Mapping-Datei oder Setzen in die Config(?)).

Danke und Gruss
cengizhdde


Top
 Profile  
 
 Post subject: RE: Dynamische Tabellennamen
PostPosted: Tue Jun 06, 2006 11:08 am 
Newbie

Joined: Tue Jun 06, 2006 7:41 am
Posts: 4
Ist zwar nicht gerade die feine Art (so denke ich als Neuanfänger), aber eine mögliche Lösung ist der Weg über die Configuration.

Ausgangssituation: Ich habe eine Mapping-Datei, in der Klassen mit in der Datenbank bereits angelegten Tabellen definiert werden (also <class name="....." table="MYTABLE_DE"). Diese Tabelle enthält Objekte in der deutschen Sprache; zusätzlich gibt es eine Tabelle "MYTABLE_TR", mit den selben Primary-Keys und Spalten, nur die Objekte sind in türkischer Sprache.

Wenn der Anwender die türkische Sprache (z. B. über einen Link) ausgewählt hat, kann folgender Code helfen:

Configuration config = new Configuration();
config.configure("/hibernate.cfg.xml");

Iterator iterate = config.getTableMappings();

String deTableName = "MYTABLE_DE"
String trTableName = "MYTABLE_TR";

while(iterate.hasNext()) {
Table table = (Table)iterate.next();

if(table.getName().equals(deTableName)) {
table.setName(trTableName);
break;
}
}

SessionFactory sf = config.buildSessionFactory();
Session session = sf.openSession();

.......

Wir versucht, die Namenszuordnung vorzunehmen, nachdem die SessionFactory erstellt wurde (config.buildSessionFactory()), funktioniert es nicht.

Für eine bessere Lösung Danke im voraus.

Gruss
cengizhdde


Top
 Profile  
 
 Post subject:
PostPosted: Wed Jun 07, 2006 3:31 am 
Beginner
Beginner

Joined: Fri May 19, 2006 11:34 am
Posts: 29
Hi,

kann dir bei deinem Problem so nicht helfen.

Aber warum fasst du nicht einfach die Sprachen in einer Tabelle zusammen, und wählst dann nur die entsprechenden Attribute (de oder tr) zur Laufzeit aus der Tabelle aus??? Ist doch viel einfacher.

So denn
Kai


Top
 Profile  
 
 Post subject:
PostPosted: Thu Jun 08, 2006 3:42 am 
Newbie

Joined: Tue Jun 06, 2006 7:41 am
Posts: 4
Hi Kai,

danke für die Antwort.

Ich plane in Zukunft die Anwendung auch in anderen Ländern einzuführen und möchte gewährleisten, das die Inhalte der Tabellen (auch wenn sie derzeit identische Primarykeys haben) unabhängig voneinander gepflegt werden können. Somit habe ich später keinen Mehraufwand an DB-Pflege.

Das Beispiel was ich selbst geschrieben habe und mir so eingefallen ist kann natürlich nicht funktionieren, da nach dem Erzeugen der SessionFactory eine Änderung der Tabellennamen nicht möglich ist. Ich brauche also jedesmal, wenn ich den Tabellennamen dynamisch vergeben möchte, ein Configuration-Objekt, suche mit "getTableMappings()" nach der Tabelle, ändere dessen Namen und arbeite dann mit der SessionFactory, was aber ein erheblicher Aufwand ist.

Habe jetzt eine eigene "Framework" aufgebaut, würde mich aber trotzdem über eine Lösung mit Hibernate freuen.

Danke nochmal und Gruss
Cengiz


Top
 Profile  
 
 Post subject:
PostPosted: Thu Jun 08, 2006 3:35 pm 
Newbie

Joined: Thu Feb 16, 2006 2:05 pm
Posts: 10
Location: Nürnberg, Germany
Hallo,

eine andere Möglichkeit wäre, eine eigene Implementierung von NamingStrategy zu schreiben (siehe Referenz-Dokumentation Kap. 3.6).

Damit lassen sich die Regeln zur Vergabe von Tabellennamen beeinflussen.
Beispielsweise könnte eine eigene Namingstrategy ein Länderkürzel aus einer Property-Datei einlesen und an den Tabellennamen hängen...

_________________
Please rate this post, if it helped you.


Top
 Profile  
 
 Post subject:
PostPosted: Thu Aug 09, 2007 3:36 am 
Newbie

Joined: Sun May 06, 2007 5:57 am
Posts: 10
Lösung, siehe hier:

http://forum.hibernate.org/viewtopic.php?t=978331


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