私はいくつかの結合テーブルを使用し、結合されたテーブルの列名を含むクエリを書くとき、HQLは配列の代わりに配列リストを返すようにします。私はそれをオブジェクトにするためにnew
を使うべきであることを発見しました。HQLはオブジェクトを返しません
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
これまでに試したところ、エラー:'Accommodation' cannot be resolved to a type.
がありました。何か間違っていますか?
更新
新しいクエリ: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:あなたのクラスの宿泊施設に関する完全なパスを追加します
をあなたは
Accomodation
クラスでこのようなコンストラクタを持っている必要があります。 2.宿泊施設について正しいコンストラクタを定義しましたか? –@JoeTaras私は、宿泊施設用のデフォルトのコンストラクタを持っています。 –
(タイプ1、タイプ2、タイプ3)のコストラクターを3種類のクエリーで追加する必要があります。 –