JPA ManyToMany mit zusätzlicher Spalte

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:

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:
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
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
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:

Ähnliche Java Themen


Oben