2016-05-23 14 views
1

können also sagen, ich habe diese beiden Klassen:JPA - Abrufen von Informationen aus angeschlossenen Tabellen

@Entity 
public class Reservation extends Observable implements Serializable { 

@Id 
@GeneratedValue(strategy=GenerationType.AUTO) 
private Long id; 

private static final long serialVersionUID = 1L; 

@ManyToOne(cascade = CascadeType.MERGE) 
private ReservationState state; 

@ManyToOne(cascade = CascadeType.MERGE) 
private CafeteriaUser user; 

@ManyToOne(cascade = CascadeType.ALL) 
@JoinColumn(name="idMeal",referencedColumnName= "idMeal") 
private Meal meal; 

Und

@Entity 
public class Meal implements Serializable { 

private Price price; 
private MealType mealType; 
private Dish m_dish; 

@Temporal(javax.persistence.TemporalType.DATE) 
private Calendar date; 

@ManyToOne (cascade = CascadeType.ALL) 
private Menu menu; 

@Id 
@GeneratedValue(strategy = GenerationType.AUTO) 
private Long idMeal; 

public Meal() { 
} 

Nun, ich habe Probleme ‚Verbinden‘ diese beiden Tabellen. Was würde bedeuten, die Reservierungen zu einem bestimmten Datum zu erhalten (wählen Sie * aus Reservierung r, Mahlzeit m, wo r.idMeal = m.IDMEAL und m. "DATE" = '2016-01-01') in JPQL?

Es scheint mit r.idMeal = m.idMeal gibt mir "Der Sammlung-Wert-Pfad 'r.idMeal' kann nicht in ein gültiges Assoziationsfeld aufgelöst werden." Fehler

+0

r.idMeal ist keine Sammlung wertgeschätzten Pfad (basierend auf was Sie veröffentlichen). r.idMeal ist jedoch ein Meal-Objekt und m.idMeal ist ein Long ... also sind sie nicht vergleichbar –

Antwort

1

Grund JPQL wie dieses

SELECT r FROM Reservation r JOIN r.meal m WHERE m.date = :date 

und übergeben das Datum als Parameter sein würde. Dies sollte aus der überwiegenden Mehrheit der JPQL-Tutorials da draußen sein

Verwandte Themen