2013-01-19 1 views
0

현재 DTO로 Hibernates 분리 개체를 사용하는 것에 대한 몇 가지 테스트를하고 있습니다. 하지만 부모 콩 분리 (CascadeType.ALL 설정되어 있지만 부모 콩 컬렉션 내에 포함 된 콩 캐스케이드되지 않습니다 문제가 있습니다.최대 절전 모드 : 분리가 컬렉션에 계단식으로 연결되지 않았습니다.

예를 들어 속성 ​​유형에 외래 키가있는 속성 모음이 포함 된 상위 키가 있습니다. 그 I 출력 후

session.evict(bean); 

일부 데이터 :

System.out.println(bean.getName()); 
for (Attribute attr : bean.getAttributes()) { 
    System.out.println(attr.getName()); 
    System.out.println(attr.getType().getName()); 
} 

지금까지 모든 작업을 내가 세션에서 분리 빈을 읽은 후

Parent bean = (Parent) session.createCriteria(Parent.class) 
    .add(Restrictions.eq("id", 1223215031850009727l)) 
    .setFetchMode("attributes", FetchMode.JOIN) 
    .createAlias("attributes.type", "attributetype") 
    .uniqueResult(); 

: 나는 그것을 다음과 같은 방법을 읽어 예상대로 하지만 만약 내가 "createAlias"콩의 로딩에서 속성 유형의 액세스에 또한 세션에서 분리해야합니다 (속성 매핑 CascadeType.ALL을 포함) 오류를 얻을 것으로 기대했다 제거합니다. 오류 대신 hibernate가 SQL을 트리거하여 유형을로드합니다.

왜 세션에서 속성이 분리되지 않습니까?

답변

0

해결책을 찾았습니다. 케스케이드 (최소한 DETACH)는 외래 키 특성에도 설정해야합니다.

관련 문제