Ich möchte, dass meine HQL Object anstelle von Array zurückgibt, weil ich einige Join-Tabellen verwende und wenn ich eine Abfrage mit Spaltennamen verknüpfter Tabellen schreibe, gibt HQL Array-Liste anstelle von Objekt. Ich fand, dass wir new
verwenden sollten, um es zu objektieren.HQL gibt kein Objekt zurück
SELECT new Accommodation(a.name, a.rank, ap.pic) FROM Accommodation AS a INNER JOIN a.accommodationPics AS ap WHERE ap.isPromoPic = 1 AND a.cbState.stateName = :stateName
habe ich versucht, diese so weit und bekam Fehler: 'Accommodation' cannot be resolved to a type.
. Stimmt irgendetwas nicht?
aktualisiert
Neue Abfrage: SELECT new ba.reservation.pojo.Accommodation(a.name, a.rank, ap) FROM Accommodation AS a INNER JOIN a.accommodationPics AS ap WHERE ap.isPromoPic = 1 AND a.cbState.stateName = :stateName
@Column(name = "name", nullable = false, length = 200)
private String name;
@Column(name = "rank")
private int rank;
@OneToMany(mappedBy = "accommodationBean", fetch = FetchType.EAGER, cascade = CascadeType.REMOVE)
@JsonManagedReference
private List<AccommodationPic> accommodationPics;
public Accommodation(String _name, int _rank, ArrayList<AccommodationPic> _pic) {
this.rank = _rank;
this.name = _name;
this.accommodationPics = _pic;
}
1. Wie simas_ch sagt: Fügen vollständigen Pfad zu Ihrer Klasse Unterkunft
Sie in
Accomodation
Klasse ein Konstruktor wie diese haben muss. 2. Haben Sie den richtigen Erbauer über Unterkunft definiert? –@JoeTaras Ich habe nur einen Standardkonstruktor für die Unterkunft. –
Sie müssen einen Costructor mit (Type1, Type2, Type3) mit 3 Arten Ihrer Abfrage hinzufügen –