[英]querydsl get column from tuple
我創建了返回建築物ID和該建築物中公寓數量的查詢。 如何從該元組中獲得具有最大數量的建築物? 除了遍歷整個列表。
JPAQuery<Tuple> query2 = new JPAQuery(entityManager);
QBuildingEntity building = QBuildingEntity.buildingEntity;
QApartmentEntity apartment = QApartmentEntity.apartmentEntity;
query2 = query2.select(apartment.count(), apartment.building.id).from(apartment).where(apartment.status.lower().eq("free"))
.groupBy(apartment.building);
以下是建築物和公寓實體:
public class BuildingEntity extends AbstractEntity implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
Long id;
@OneToMany(fetch = FetchType.LAZY, mappedBy = "building", cascade = CascadeType.ALL, orphanRemoval = true)
Set<ApartmentEntity> apartments = new HashSet<>();
}
public class ApartmentEntity extends AbstractEntity implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
Long id;
@Column(name = "STATUS", nullable = false, length = 50)
String status;
@ManyToOne(fetch = FetchType.LAZY, cascade = {CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REFRESH})
@JoinColumn(name = "BUILDING_ID")
BuildingEntity building;
}
您可以通過apartment.count()
降序對查詢進行排序,然后選擇第一個結果。 就像是:
query2.select(apartment.count(), apartment.building.id)
.from(apartment)
.where(apartment.status.lower().eq("free"))
.groupBy(apartment.building)
.orderBy(apartment.count().desc())
.limit(1L);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.