그래서 나는 여기에서 아이디어를 얻기 위해 짚으로 꽉 잡고있다. (또한 참고 :이 간헐적 인 문제)hibernate ehcache는 컬렉션의 1 요소를 찾는다.
을 내가 '아이'개체의 컬렉션과 함께 '부모'개체가 있습니다
< 부모의 물건>
을 ...
< 세트 이름을 = " 어린이 "역 ="true "를 주문에 의해 ="child_id ">
< 캐시 사용 ="읽기 - 쓰기 "/>
< 키 열 ="PARENT_ID "/>
< 일대 클래스 =" ChildClass "/>
</설정>
...
</부모>
< 아이 물건>
...
< 대일 = "부모"
열 = "PARENT_ID"
이름 삽입 = "true"를
갱신 = "true"를
하지 널 = "true"를
클래스 = "에 ParentClass"
인덱스 = "idx_child_parent"/> ...
</어린이>
내가 좋아하는 쿼리를 실행하는 경우 : 는 "ChildClass에 아이 어린이를 선택합니다"+ "child.parent = 부모 "; 모든 자식을 찾습니다. 완전한.
그러나 부모 개체를 검색하여 찾으면 최대 절전 모드가 실행되어 내 ParentClass가 생성되지만 자식의 첫 번째 자식 만 채워집니다. 사실 최대 절전 모드 코드로 디버깅하고 그 사실을 발견 ParentClass에 대한 setChildren()에 대한 호출은 오직 하나의 요소 컬렉션을 보냈습니다 - 내가 첫 번째 쿼리에서 더 많은 것을 알았을 때.
그래서, 나는 EHCache를 사용하고 있으며이를 지우는 것이 좋지 않습니다. CacheManager.getInstance(). clearAll();을 호출하십시오.
내 응용 프로그램을 다시 시작하면 작업이 완료됩니다. 부모의 겉보기에 무작위적인 인스턴스에서 잠시 후에 깨지기 만하면됩니다.
이 문제를 직접 일으키는 일은 (내가 아는) 것이 없습니다. 누구나이 버그를 일으키는 최대 절전 버그 나 EHCache 버그를 알고 있습니까? 내 캐시에서 분명히 명확하게 전화하고 있습니까?
모든 포인터가 좋을 것입니다.
나는 최대 절전 모드 3.2.6을 사용하고 있으며, mysql과 postgres에서도 같은 문제가 발생한다.
편집 : 1 개 요소 만있는이 컬렉션은 일종의 '존재하지 않은'상태에 추가해야합니다. 즉. 하위 요소가 하나만있는 트랜잭션이 없었습니다
'hashCode()': – Bozho
잘못된 것이면 유감스럽게 생각합니다. 틀린 아이들을 일관되게 반환 할 것입니다. 그러나 어쨌든 두 번 확인했는데 정확합니다. 아이디어를 주셔서 감사합니다. – gcrain