필자는 Visual Paradigm을 사용하여 Java 프로젝트를 개발하고 있습니다. 비주얼 패러다임은 Hibernate를 사용하고있다. Genady RMI를 추가하기 전까지 프로젝트가 잘 돌아가고있었습니다. 나는 또한 RMI를 사용해야한다.Hibernate + RMI가있는 "No session or session was closed"
서버 측에서는 데이터베이스에 대한 모든 쿼리를 관리하는 MainDb가 있으며 클라이언트 측에는 RMI Remote를 구현하는 UserWindow 및 AdminWindow 클래스가 있습니다. 이 두 클래스는 RMI를 통해 MainDb 객체를 가져옵니다. 나는 서버와 클라이언트를 실행 해요
, 나는 오류 게으른 초기화에 관련된 예외를 가지고있다 "아무 세션이나 세션이 종료되지 않았다"
failed to lazily initialize a collection of role: dcl.UsuarioRegistrado.ORM_TieneVideosFavoritos, no session or session was closed.
를 지금까지 내가 아는 한, Hibernate는 dcl.UsuarioRegistrado 객체가 생성 된 다른 세션을 사용하고있다. 문제는 PersistentManager 클래스가 getSession() 만 제공하기 때문에 세션을 관리하지 않는다는 것입니다. PersistentManager 클래스는 VisualParadigm이 Hibernate를 관리하기 위해 제공하는 클래스이다.
모든 엔티티를 lazy = "false"로 구성하려고했지만 일부 엔티티의 속성이 올바르게로드되지 않아 그 결과가 나 빠졌습니다. 예를 들어 "Topic"개체가 "TopicName"String 속성과 함께로드되어 null로 설정되었습니다.
그래서 동일한 세션을 유지하려면 어떻게해야합니까?
미리 감사드립니다. 매우 불쌍하지만 내 불쌍한 영어입니다. 상황을 영어로 설명하기가 어렵습니다. 다시 한번 감사드립니다.
'PersistentManager.getSession()'반환 세션을 사용하여'sessionFactory.getCurrentSession()'또는'는 SessionFactory.openSession()'? –
C3P0 연결 풀을 사용하고 있습니까? 그렇다면 문제를 해결할 수 있는지 확인하십시오. 난 최대 절전 모드 전체 struts2 플러그인과 비슷한 문제가 있었다. – Resh32
@ Resh32 C3P0을 사용하고 있습니다.에서 속성을 제거하는 것을 비활성화 할 수 있습니까? –
honnix