@ElementCollection(fetch=FetchType.LAZY)
@CollectionTable(joinColumns=@JoinColumn(name="CNSMR_DLR_REV_ID"), name="CNSMR_VISIT_REAS")
@Column(name="CNSMR_VISIT_REAS_TYP_CD",insertable=false,updatable=false)
protected Set reasonsForVisit;
reasonsForVisit: ["SHOPNEW", "SHOPUSED", "SHOPSVC"]
@ElementCollection(fetch=FetchType.LAZY) @CollectionTable(joinColumns=@JoinColumn(name="CNSMR_DLR_REV_ID"), name="CNSMR_DLR_REVIEW_CTGY") @Column(name="DLR_REV_CTGY_RATE_NBR",insertable=false,updatable=false) @MapKeyColumn(name="DLR_REV_CTGY_TYP_CD") protected Map
ratings; ResultSet:
{category=OverallFacilities, value=4.0}
{category=CustomerService, value=4.0}
{category=QualityOfRepair, value=4.0}
{category=BuyingProcess, value=4.0}
select distinct R from Review R LEFT JOIN R.responses rr ON rr.status = 'APP' where R.dealerPartyId = :dealerPartyId
select CR from ConsumerReviews CR JOIN CR.reviews R JOIN R.ratings RA JOIN R.reasonsForVisit VR " +
"LEFT JOIN R.responses rr ON rr.status = 'APP' where exists(select v from VisitReason v where v.visitReasonCode = 'SVCREPAIR' and v.reviewId = R.reviewId) " +
"and CR.dealerPartyId = :dealerPartyId and R.status='APP' " +
"ORDER BY R.overallRating DESC, R.submittedDate DESC
query="select CR from ConsumerReviews CR JOIN CR.reviews R JOIN R.ratings RA LEFT JOIN R.responses rr ON rr.status = 'APP' where CR.dealerPartyId = :dealerPartyId and R.status='APP' ORDER BY R.submittedDate DESC",
hints={
@QueryHint(name=QueryHints.FETCH, value="CR.reviews"),
@QueryHint(name=QueryHints.LEFT_FETCH, value="CR.ratings"),
@QueryHint(name=QueryHints.LEFT_FETCH, value="CR.reviews.reasonsForVisit"),
@QueryHint(name=QueryHints.LEFT_FETCH, value="CR.reviews.ratings"),
@QueryHint(name=QueryHints.LEFT_FETCH, value="CR.reviews.responses"),
}