Ich möchte alle Pläne finden, wo Stadt Name Madrin (zum Beispiel) gleich. Aber ich bekomme immer einen Fehler.Wie findet man nach zusammengesetzten Objekteigenschaften?
org.springframework.web.util.NestedServletException: Anforderungsverarbeitung fehlgeschlagen; verschachtelte Ausnahme ist org.hibernate.QueryException: Eigenschaft: location.lName von: io.onek.entity.FuturePlan konnte nicht aufgelöst werden.
Hilf mir, es herauszufinden.
Zukunftsplan
@Entity
public class FuturePlan {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private int fpId;
private String about;
@DateTimeFormat(pattern = "dd-mm-yyyy")
@Temporal(TemporalType.DATE)
private Date travelDate;
@ManyToOne(fetch=FetchType.EAGER)
private User user;
@ManyToOne(fetch=FetchType.EAGER)
private Location location;
public FuturePlan() {
super();
}
public FuturePlan(String about, Date travelDate) {
super();
this.about = about;
this.travelDate = travelDate;
}
public FuturePlan(String about, Date travelDate, User user, Location location) {
this.about = about;
this.travelDate = travelDate;
this.user = user;
this.location = location;
}
..get/set/
Ort
@Entity
public class Location {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private int lId;
private String lName;
public Location() {
super();
}
public Location(int lId, String lName) {
super();
this.lId = lId;
this.lName = lName;
}
Methode von meinem DAOImpl.
@Override
public List<FuturePlan> findByLocation(String name) {
Session session = sessionFactory.openSession();
Criteria cr = session.createCriteria(FuturePlan.class);
cr.add(Restrictions.eq("location.lName", name));
List<FuturePlan> list = cr.list();
session.close();
return list;
}
'HQL' - weil er' Session' verwendet. Und dieses 'HQL' erzeugt eine' Kreuzverbindung'. –