-->
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: dynamische Spaltenanzahl und titel
PostPosted: Sat Jul 08, 2006 5:49 am 
Newbie

Joined: Fri Apr 21, 2006 5:51 am
Posts: 5
Hallo zusammen,

ich habe ein kleines Problem (ich hoffe das es klein ist :) )
Ich lese per Hibernate daten aus einer Oracle Datenbank - so auch Benutzerdaten.



Die Tabelle der Benutzer besitzt
ID, login, Password, Value1, Value2 usw.
als Spalten;

genau hier liegt das Problem. Die Anzahl der Value-Spalten ist nicht festgelegt; es soll möglich sein das wenn eine neue Spalte in der DB angelegt wird, diese auch dem POJO übergeben wird.

Habt ihr dazu eine Idee?

DANKE


Top
 Profile  
 
 Post subject:
PostPosted: Mon Jul 10, 2006 5:08 am 
Beginner
Beginner

Joined: Fri May 19, 2006 11:34 am
Posts: 29
Ist doch wirklich einfach.

Wenn die DB erweitert wird, muss entsprechend das Mapping-File und die Klasse angepasst werden.

Ich glaube, hier ist ein entsprechendes Architekturproblem.

Sofern die Spalten value1-x tatsächlich für die Anwendung relevante Daten enthalten, die Einfluss auf die Logik besitzen, so bleibt dir nichts anderes übrig, als die Erweiterungen auch in das Mapping und die entsprechende Logik zu bringen.

Handelt es sich dabei jedoch um einen reinen "Datenspeicher", also nur um Platzhalter, so sollte das ganze in eine weitere Tabelle verlagert werden, deren Spalten du in einer List z.B. an das eigentlich User-Objekt anhängst. Und dann hast du einen dynamischen Container.

Viele Grüsse
Kai


Top
 Profile  
 
 Post subject:
PostPosted: Mon Jul 10, 2006 7:39 am 
Newbie

Joined: Fri Apr 21, 2006 5:51 am
Posts: 5
Danke für die Antwort.
Das Problem ist dieses, das später Spalten vom Admin hinzugefügt werden können und ich keinen Einfluss darauf habe.
meine lösung jetzt ist folgende:

Code:
                try{
                    Class.forName( "oracle.jdbc.driver.OracleDriver" );
                    cn = DriverManager.getConnection( "jdbc:oracle:thin:@localhost:1521:ORCL", "user", "pass" );
                    st = cn.createStatement();
                    rs = st.executeQuery( "select * from TUSER WHERE USERID = " +user.getId()  );
                    ResultSetMetaData rsmd = rs.getMetaData();
                    int i, n = rsmd.getColumnCount();
                    rs.next();
                    for( i=1; i<=n; i++ ) {
                        columnName = rsmd.getColumnName( i );
                        if(columnName.startsWith("VALUE")){
                            try{
                                Integer.parseInt( columnName.substring(5));
                                user.setPermission(columnName, rs.getString(i));

                                System.out.print( columnName + " | " +  rs.getString(i) +"\n" );
                            }catch(Exception e){
                                e.printStackTrace();
                            }

                        }
                    }
                }


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.