我目前正在開發一個 SpringBoot 應用程序,該應用程序允許用戶在特定餐廳預訂餐桌。用戶可以根據各種喜好過濾餐廳。其中之一是他們提供的食物類型。餐廳類有一個食物列表作為屬性,如下所示。package entities;import lombok.Data;import lombok.NoArgsConstructor;import lombok.NonNull;import javax.persistence.*;import java.util.ArrayList;import java.util.List;@Data@NoArgsConstructor@Entity(name = "Restaurant")public class Restaurant extends User{@Column(name = "name", unique=true, nullable = false)@NonNullprivate String name;@Column(name = "rut", nullable = false)@NonNullprivate String RUT;@Column(name = "address")private String address;@Column(name = "phone")private Long phoneNumber;@Column(name = "max_capacity", nullable = false)@NonNullprivate Integer maxCapacity;@ManyToOne@JoinColumn(name = "neighbourhood", nullable = false)@NonNullprivate Neighbourhood neighbourhood;@ManyToMany(fetch=FetchType.EAGER)private List<Food> foods = new ArrayList<>(); public Restaurant(String email, String username, String password, String name, String RUT, Integer maxCapacity, Neighbourhood neighbourhood) { super(email, username, password); this.name = name; this.RUT = RUT; this.maxCapacity = maxCapacity; this.neighbourhood = neighbourhood; }}
1 回答

慕容森
TA貢獻1853條經驗 獲得超18個贊
您需要在子查詢之外使用r2而不是r
@Query("SELECT r2 FROM Restaurant r2
WHERE EXISTS
(SELECT r, COUNT(r) FROM
Restaurant r INNER JOIN r.foods rf WHERE rf IN :foods AND r2=r GROUP BY r
HAVING COUNT(r)=:size)
AND r2.name LIKE '%:name%' AND r2.neighbourhood IN
:neighbourhoods AND r.maxCapacity >= :maxCapacity")
添加回答
舉報
0/150
提交
取消