다음과 같은 클래스가 있다고 가정 해 봅시다 (간결성을 위해 getter/setter가 생략되었습니다). 나는 말한다 쿼리를 실행하려면 최대 절전 모드 기준을 사용Hibernate Criteria
public class Record{
// ... properties
private Metadata metadata;
@OneToOne(cascade=CascadeType.ALL)
@PrimaryKeyJoinColumn
public Metadata getMetadata(){
return metadata;
}
}
public class Metadata {
private Boolean enabled = false;
private Record record;
@OneToOne
@PrimaryKeyJoinColumn
public getRecord() {
return record;
}
@Column("enabled")
public Boolean getEnabled() {
return enabled;
}
}
'나에게 널 (null) 메타 데이터 또는 사용할 수 없습니다 메타 데이터가 모든 레코드주세요'. 당분간 내 코드는 다음을 수행합니다.
List results = session().createCriteria(Record.class).list();
// iterate over results, pluck out the Records that match my criteria
...하지만 더 잘 할 수 있습니까?
메타 데이터의 별칭을 만들고 앨리어스가 null인지 확인하려고했거나 alias.property가 내 조건 (즉, Restrictions.eq ("metadata.enabled", false)과 일치하는지 확인하려고했으나 ' t 작업. 또한 찾고있는 두 조건 (메타 데이터 null 또는 메타 데이터를 사용할 수 없습니다.)에 의해 내 결과를 필터링하려면 분리를 사용하려고 시도. 이러한 접근 방식 중 어느 쪽도 작동하지; 나는 그것을 시도하기 때문에 그 가정합니다 . 내가 할 수 있다면 그것은 나를 위해이에 도움이 되거하시기 바랍니다 것으로 예상되는 방식으로 결합되지 않은 기준으로 할
네, 이것은 제가 처음으로 구현 한 것입니다. 이것은 작동하지 않았다. 사람들이 이것이 확실히 올바른 접근이라고 말할 수 있다면 내 문제는 다른 곳에서해야합니다. – zmf
DetachedCriteria (스프링 사용)를 사용할 때 개인적으로 중첩 된 속성에 문제가있었습니다. 문제가 무엇인지 파악하지 못했습니다 ... 특정 엔터티에 하위 기준을 만들어 추가 필터링을 수행해야했습니다. – Less