JPA ManyToMany mit zusätzlicher Spalte

Dieses Thema JPA - ManyToMany mit zusätzlicher Spalte im Forum "Data Tier" wurde erstellt von Mendred, 18. März 2014.

Thema: ManyToMany mit zusätzlicher Spalte Hallo, ich benutze für ein Schulprojekt OpenJPA 2.2.2 und muss eine ManyToMany Beziehung mit einer zusätzlichen...

  1. Mendred
    Mendred Neues Mitglied
    Hallo,

    ich benutze für ein Schulprojekt OpenJPA 2.2.2 und muss eine ManyToMany Beziehung
    mit einer zusätzlichen Spalte in der Join Table abbilden. Ich habe das Problem, das ich aber nur
    Werte aus der Tabelle "Auftrag" erhalte, jedoch keine aus Artikel und gar nix aus der JoinTable.

    Der Aufruf lautet:

    Code (Java):

    @Override
        public List<Auftrag> leseAlleAuftraege() {
            List<Auftrag> auftragListe;
            EntityManager em = emf.createEntityManager();
            CriteriaBuilder builder = em.getCriteriaBuilder();
            CriteriaQuery<Auftrag> query = builder.createQuery(Auftrag.class);
            Root<Auftrag> root = query.from(Auftrag.class);
            query.select(root);
            auftragListe = em.createQuery(query).getResultList();
            em.close();
            return auftragListe;
        }
     
    Im Anhang der Quellcode

    Klasse Artikel:
    Code (Java):

    @Entity
    @Table(name = "artikel")
    @XmlRootElement(name = "artikel")
    public class Artikel  {

        @Id
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        @Column(name = "idArtikel")
        private int artikelId;

        @OneToMany(mappedBy="artikel")
        private List<AuftragHasArtikel> auftragListe;

        @Column(name = "Artikelname")
        private String artikelName;

        @Column(name = "Artikelbezeichnung")
        private String artikelBezeichnung;

        @Column(name = "Preis")
        private float artikelPreis;

        @Column(name = "Download")
        private boolean isDownload;

    //Getter und Setter...

    }
     
    Klasse Auftrag
    Code (Java):

    package de.hhbk.entity;

    import java.util.Date;
    import java.util.List;

    import javax.persistence.Column;
    import javax.persistence.Entity;
    import javax.persistence.GeneratedValue;
    import javax.persistence.GenerationType;
    import javax.persistence.Id;
    import javax.persistence.JoinColumn;
    import javax.persistence.OneToMany;
    import javax.persistence.Table;
    import javax.persistence.Temporal;
    import javax.persistence.TemporalType;
    import javax.xml.bind.annotation.XmlElement;
    import javax.xml.bind.annotation.XmlRootElement;

    @Entity
    @Table(name = "Auftrag")
    @XmlRootElement
    public class Auftrag {

        @Id
        @GeneratedValue(strategy=GenerationType.IDENTITY)
        private int idAuftrag;

        @Column(name = "datum")
        @Temporal(TemporalType.DATE)
        private Date datum;

        @OneToMany(mappedBy="auftrag")
        private List<AuftragHasArtikel> artikel;

    //Getter und Setter

    }
     
    Join Table Klasse AuftragHasArtikel
    Code (Java):


    @Entity
    @Table(name = "auftrag_has_artikel")
    @IdClass(AuftragHasArtikelId.class)
    @XmlRootElement
    public class AuftragHasArtikel {

        @Id
        @Column(name = "Auftrag_idAuftrag")
        private long idAuftrag;
        @Id
        @Column(name = "Artikel_idArtikel")
        private long idArtikel;
        @Column(name = "Anzahl")
        private int anzahlArtikel;
        @Column(name = "Preis")
        private float artikelPreis;
        @ManyToOne
        @JoinColumn(name = "Artikel_idArtikel", referencedColumnName = "idArtikel")
        private Artikel artikel;
        @ManyToOne
        @JoinColumn(name = "Auftrag_idAuftrag", referencedColumnName = "idAuftrag")
        private Auftrag auftrag;

    }

     
     
    Zuletzt bearbeitet: 18. März 2014
  2. Vielleicht hilft dir das kostenlose Training weiter --> (hier klicken)