다음 엔티티 1 대 다수 모델이 주어 졌을 때 :Hibernate HQL to SQL
하나의 저장소가 많은 AuditRecord에 링크 될 수 있습니다.
많은 AuditRecords 같은 저장소에 대한 모든 링크는
@Entity
class AuditRecordEntity {
private AuditRepositoryEntity auditRepository;
@ManyToOne(cascade = CascadeType.ALL)
@JoinColumn(name = AUDIT_REPOSITORY_DB_COLUMN_NAME, nullable = false, updatable = false)
public AuditRepositoryEntity getAuditRepository() {
return auditRepository;
}
...
}
@Entity
class AuditRepositoryEntity {
private List<AuditRecordEntity> auditRecords = new ArrayList<AuditRecordEntity>();
@OneToMany(mappedBy = "auditRepository")
public List<AuditRecordEntity> getAuditRecords() {
return auditRecords;
}
...
}
I는 각각 별개의 저장소에 AuditRecord (accessTime에 의해) 최신을 얻을 수있는 다음과 같은 HQL 쿼리를 가질 수 있습니다
select auditRecord from AuditRecordEntity auditRecord where auditRecord.accessTime =
(select max(auditRecord2.accessTime) from AuditRecordEntity auditRecord2 where
auditRecord2.auditRepository = auditRecord.auditRepository)
내가 좋아하는 것 위의 HQL에 상응하는 SQL을 아는가?
(그 이유는 I'l 내가 위의 기준 API를 사용하여 HQL을 번역하는 데 문제가 있어요 같이 기준 API를 사용하여 SQL 제한으로 쿼리를 추가한다 - Hibernate criteria implementation for this entity model (subquery, self-join) 참조)가