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.  [ 4 posts ] 
Author Message
 Post subject: Datensaetze holen aus 3 Tabellen?
PostPosted: Thu Jan 18, 2007 4:45 am 
Newbie

Joined: Thu Nov 23, 2006 11:08 am
Posts: 14
hallo, ich habe eine methode geschrieben, die 3 parameter hat. die methode sieht so aus:

Code:
public List getMotor(String type, String marke, String beschreibung) throws BaatkatalogenException {

    Session session = HibernateUtil.getSessionFactory().getCurrentSession();
    session.beginTransaction();
    Criteria criteria = session.createCriteria(MotorData.class);
    //wie weiter???????????????
    return criteria.list();

}


so, jeder dieser werte steht in iner eigenen tabelle nud die beans dazu heissen MotorData, MarkeData und DescData. wie kann ich denn jetzt alle datensaetze holen, die diesen 3 parametern entsprechen? waere das in einer tabelle, immer mit criteria.add(...), aber wenns 3 tabellen sind? waere fuer jeden tip dankbar!!

gruesse :-)


Top
 Profile  
 
 Post subject:
PostPosted: Thu Jan 18, 2007 9:25 am 
Expert
Expert

Joined: Tue Nov 23, 2004 7:00 pm
Posts: 570
Location: mostly Frankfurt Germany
Wenn die Tabelle in keiner Beziehung stehen, könntest Du Dir höchstens ein
Object array mit drei Listen erstellen.

Object result[] = new Object[3];
result[1] = liste1;
....

_________________
Best Regards
Sebastian
---
Training for Hibernate and Java Persistence
Tutorials for Hibernate, Spring, EJB, JSF...
eBook: Hibernate 3 - DeveloperGuide
Paper book: Hibernate 3 - Das Praxisbuch
http://www.laliluna.de


Top
 Profile  
 
 Post subject:
PostPosted: Fri Jan 19, 2007 3:55 am 
Newbie

Joined: Fri Apr 21, 2006 10:35 am
Posts: 13
Location: de
Es kommt darauf an, welche Fremdschlüsselbeziehungen (foreign keys) zwischen MotorData und MarkeData bzw. zwischen MotorData und DescData bestehen.

Angenommen, deine Klasse MotorData hat ein Attribut "type" vom Typ String, ein Attribut "brand" vom Typ MarkeData und ein Attribut "description" vom Typ DescData. Dann sollte es so aussehen:
Code:
Criteria criteria = session.createCriteria(MotorData.class);
criteria.add(Restrictions.eq("type", type));
criteria.add(Restrictions.eq("brand", marke));
criteria.add(Restrictions.eq("description", beschreibung));


Wichtig hierbei ist, dass die Tabelle MotorData irgendwie mit MarkeData (bzw. DescData) verknüpft ist. Entweder durch ein Attribut vom Typ MarkeData in MotorData oder durch ein Attribut vom Typ MotorData in MarkeData. Wobei Collections genauso gehen, also z.B. ein Attribut vom Typ Set<MarkeData> in MotorData.


Top
 Profile  
 
 Post subject: Datenmodell / ERD
PostPosted: Fri Jan 19, 2007 10:01 am 
Beginner
Beginner

Joined: Thu Nov 23, 2006 5:09 am
Posts: 21
Auch wenn Hibernate Dir viel Arbeit abnimmt:

Du kommst nicht um ein sauberes Datenmodell herum.

Dazu gehören die Beziehungen zwischen Deinen Klassen Motor, Typ, Marke und Beschreibung.

Diese Beziehungen musst Du dann in den jeweiligen hbm Files auch definieren, in den DB-Tabellen sind es dann die ForeignKeys, in der Regel als Primärschlüssel der jeweils anderen Tabelle.

Beispiel:

Tabelle Motor
Spalte Id
Spalte Baujahr
Spalte Seriennummer
Spalte Typ (Foreign Key auf Typ.Id)
Spalte Marke (Foreign Key auf Marke.Id)


Tabelle Marke
Spalte Id
Spalte Name
...?

Tabelle Typ
Spalte Id
Spalte Hubraum
Spalte Kraftstoff
Spalte Zylinderzahl

In den HBM Files wird das dann meist zu 'one to many' oder 'many to one' Beziehungen welche Deine Klassen Referenzen Abbilden.

public class Motor {
private long id;
private String serialNumber;
private String productionYear;
private Type type;
}


Danach funktioniert es genau wie Yuunli es schon beschrieben hat.


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