Hibernate many-to-many in DB schreiben

woezelmann

Mitglied
Hallo Leute,

ich werkel seit einiger Zeit an ner Datenbankverbindung mit Hibernate. Die DB besteht (zur Zeit) aus 2 Tabellen (naja eigentlich 3):
Emails mit den Attributen Absender, Betreff usw. und
Empfänger mit dem Attribut (Mail)Adresse.
Die beiden Tabellen stehen haben eine m:n Beziehung zueinander (deshalb auch die 3 Tabelle).

Ne neue Mail mit einem Empänger in die DB zu schreiben ist kein Problem. Ich hab aber absolut keine Idee wie ich ne Mail mit mehreren Empfängern in die DB schreibe.

Kann mir jemand von euch nen Code-Fetzen geben, in dem ein ähnlicher Fall behandelt wird?

Danke im Voraus.
Christoph
 
Hmmm....

Die kenn ich alle schon, da steht nichts drin was mir weiterhilft.
Bei mir sieht das ganze so aus:

Code:
...

Mail mail = new Mail();
Empfaenger empfaenger1 = new Empfaenger();
Empfaenger empfaenger2 = new Empfaenger();
Empfaenger empfaenger3 = new Empfaenger();

mail.setAttribute(...);  //nur als Beispeil, die Attribute setzte ich natürlich einzelnd :>
empfaenger1.setAdresse()...;
empfaenger2.setAdresse()...;
empfaenger3.setAdresse()...;

empfaenger1.getMails().add(mail);
empfaenger2.getMails().add(mail);
empfaenger3.getMails().add(mail);

mail.getEmpfaenger().add(empfaenger1);
mail.getEmpfaenger().add(empfaenger2);
mail.getEmpfaenger().add(empfaenger3);

session.save() ... usw.

und anstadt das mail.getEmpfaenger().add(...); immer das set erweitert, überschreibt es es. Und das ist mein Problem
 
Code:
public class Mails {

    private long mail_id;
    private String absender;
    private String betreff;
    private Date datum;
    private int spamLevel;
    private String spamReport;
    private Blob mail;
    private Set adressen = new LinkedHashSet();


    public long getMail_id() {
        return mail_id;
    }

    public void setMail_id(long mail_id) {
        this.mail_id = mail_id;
    }

    public String getAbsender() {
        return absender;
    }

    public void setAbsender(String absender) {
        this.absender = absender;
    }

    public String getBetreff() {
        return betreff;
    }

    public void setBetreff(String betreff) {
        this.betreff = betreff;
    }

    public Date getDatum() {
        return datum;
    }

    public void setDatum(Date datum) {
        this.datum = datum;
    }

    public int getSpamLevel() {
        return spamLevel;
    }

    public void setSpamLevel(int spamLevel) {
        this.spamLevel = spamLevel;
    }

    public String getSpamReport() {
        return spamReport;
    }

    public void setSpamReport(String spamReport) {
        this.spamReport = spamReport;
    }

    public Blob getMail() {
        return mail;
    }

    public void setMail(Blob mail) {
        this.mail = mail;
    }

    public Set getAdressen() {
        return adressen;
    }

    public void setAdressen(Set adressen) {
        this.adressen = adressen;
    }
}
und gleich noch Empfänger:
Code:
public class Empfaenger implements Serializable {

    private long empfaenger_id;
    private String adresse;
    private Set emails = new LinkedHashSet();


    public long getEmpfaenger_id() {
        return empfaenger_id;
    }

    public void setEmpfaenger_id(long empfaenger_id) {
        this.empfaenger_id = empfaenger_id;
    }

    public String getAdresse() {
        return adresse;
    }

    public void setAdresse(String adresse) {
        this.adresse = adresse;
    }

    public Set getEmails() {
        return emails;
    }

    public void setEmails(Set emails) {
        this.emails = emails;
    }
}
Ist von den Bezeichnungen ein bisschen anders, wollt es oben verständlicher schreiben
 
Zurück