계단식 쿼리가 최대 절전 모드에서 발생하면 게으른 로딩 문제가 발생할 수 있습니다. 예를 들어, 이제 계정 (관리자) 클래스, 카테고리 (제품 카테고리) 및 제품 (제품) 클래스가 있습니다. 왼쪽에서 오른쪽으로, 그것은 일대일 관계이며 오른쪽에서 왼쪽으로 @manytoone (fetch = fetchtype.lazy)이 설정됩니다. 이제 제품 정보를 찾고 JSON 형식으로 패키지하여 프론트 데스크로 전달하고 싶습니다. 백그라운드에서 쿼리 문을 다음과 같이 사용합니다.
Product P에서 왼쪽으로 가입 P.Category P.Name where : name
이런 식으로 제품을 찾은 다음 제품의 카테고리도 입력됩니다. 그러나 카테고리의 계정은 실제 객체가 아니라 임시 프록시 객체입니다. 제품과 계단식 카테고리 만 확인했기 때문에 이해하기 쉽습니다. 카테고리 및 계정의 경우 실제 (게으른)에 따라 구성됩니다.
이제 쿼리 제품을 맵에 넣은 다음 JSON 형식으로 변환하여 프론트 데스크로 돌아 가면 JSON을 변환하는 과정에서 계정 객체가 닫히기 때문에 계정 객체가 발생하므로 현재 세션이 닫히기 때문에 오류 가보고됩니다. 매우 직접적이지만 좋지 않은 솔루션은 카테고리의 게으른 사람을 간절히 바꾸어 계정 정보를 찾을 수 있도록하는 것입니다. 그러나 이것은 좋지 않습니다. 따라서 다른 방법을 사용합니다. struts.xml에서 블랙리스트를 설정하고 정규식을 사용하여 JSON 형식으로 변환 할 때 카테고리에서 계정을 필터링하므로 계정 객체를 확인하지 않으며 게으름로드 문제가 없습니다. 다음과 같이 :
이 시점에서 문제가 없어야합니다. 그러나 내 프로젝트에서는 여전히 게으른 로딩 예외를보고합니다. 즉,이 방법을 구성한 후에는 작동하지 않습니다. 그러나 이론적으로, 구성 후에는 괜찮을 것이며 데이터는 JSON 형식으로 패키지되어 프론트 데스크로 정상적으로 전달할 수 있습니다. 이 문제는 이틀 동안 나를 괴롭 혔습니다. 그래서 나는 단순히 게으르고 열망으로 바꾸고 프로젝트를 시작했습니다.
오늘 나는 여기에서 또 다른 최대 절전 모드 예외에서 예외에 연락하여 해결했습니다! 오늘 Hibernate에서는 제품 정보를 얻기 위해 GET 메소드를 호출하고 싶지만 얻을 수는 없습니다. 배경 콘솔에는 메시지가 없습니다. 개발자 모드를 켜면 프론트 데스크에 오류 메시지가 표시되었습니다.
java.lang.classcastException : cn.it.shop.model.product _ $$ _ javassist_0은 javassist.util.proxy.proxy </span>에 캐스트 할 수 없습니다
프록시로 변환 할 수 없습니까? ? 에이전트로 변경되는 이유는 무엇입니까? 일반적으로 에이전트가 실제 물체로 변환 될 수 없습니까? 그래서 인터넷을 검색 한 결과이 문제는 프로젝트의 Javassist Jar 패키지 때문일 수 있음을 발견했습니다. 나는 그것을 확인하기 위해 프로젝트에 갔다. 그리고 그것은 사실로 밝혀졌다.
정말 충돌합니다 ... 그래서 나는 Struts 패키지에서 javassist-3.11.0.ga.jar를 삭제합니다. 최대 절전 모드가 정확하며 제품 정보를 정상적으로 얻을 수 있습니다. 그런 다음 2 일 전에 Struts2가 JSON으로 전환하는 문제를 기억했기 때문에 다시 Lazy로 되돌아갔습니다. 문제는 사라졌고 JSON도 정상적으로 변환 할 수있었습니다. 나는 우울했다. 실제로 JAR 패키지 사이의 충돌로 인해 발생했습니다. 당시 오류가 없었지만 프론트 데스크에서 반환 된 JSON 데이터를 찾을 수 없었습니다. JSON 데이터가 반환되지 않았다는 것을 알았습니다. JSON으로 배경 전송에 문제가 있어야합니다. 기존 경험에 따르면 90%가 게으른 적재량 이었지만 JAR 패키지 충돌로 인해 발생할 것으로 기대하지 않았습니다.
나중에 : JAR 패키지가 충돌하지 않지만 JSON을 변환 할 수없는 경우 기본적으로 게으른 하중으로 인한 문제입니다. struts.xml에서 블랙리스트를 구성하여 게으른 로딩 객체를 필터링하는 방법은 매우 실용적입니다. Pojo에서 구성을 수정할 필요가 없습니다. JSON으로 전송하고 싶은 필드를 전송할 것이며, 원하지 않는다면 매우 편리합니다.
원본 링크 : http://blog.csdn.net/eson_15/article/details/51394302
위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.