2014-07-24 3 views
0

다음 엔티티 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) 참조)가

답변

0

하나의 최대 절전 모드 속성 인

hibernate.show_sql 

최대 절전 모드 구성 파일 또는 등록 정보 파일에서이를 설정할 수 있습니다. 그것은 당신에게 당신의 hql/criteria 질의에 상응하는 sql 질의를 보여줄 것입니다.