2012-02-21 4 views
0

최대 절전 모드에 대한 질문이 있습니다. 3.1.3 버전을 사용하고 있으며 두 클래스를 가지고 있습니다. 하나는 다른 클래스를 상속합니다. 다른 하나로부터 상속받은 객체를 저장하는 방법

//User class, which is stored in the database and hibernate mapped 
public class User 

//Logged user class, this is a bean which inherits from user and 
//stores only user information and some session data 
public class LoggedUser extends User 

이 어딘가에 내 코드에 내 세션에서 LoggedUser 콩을 얻고, 나는 사용자 변수에 할당 : 이건 내 시나리오입니다.

User user = Session.getBean("LoggedUser"); 

이 캐스팅없이 수행 할 수 있습니다,하지만 난 내 데이터베이스에 "사용자"개체를 저장하려고 할 때 최대 절전 모드가 LoggedUser이 사용자 클래스를 확장되어 인식하지 못하기 때문에 나는, "알 수없는 실체"오류가있어 .

최대 절전 모드에서 상속을 구현하는 방법에 대한 튜토리얼이 많이 있지만 LoggedUser 추가 속성을 저장하는 데 관심이 없으며 User 테이블에있는 정보 만 저장하려고합니다. 어떤 생각?

답변

0

깨끗한 해결책에 대해서는 잘 모르겠지만 여기에는 몇 가지 팁이 있습니다.

  1. LoggedUser를 엔터티로 표시하고 가능한 경우 동일한 User 테이블에 매핑하고 유지하려는 필드 (모든 LoggedUser 필드)를 @Transient로 표시합니다.
  2. LoggedUser에서 @Transient 필드를 User에 추가하고 LoggedUser를 제거하십시오.
  3. User 클래스에서 LoggedUser를 사용하고 필요한 속성으로 User를 초기화하는 생성자를 만듭니다.
  4. LoggedUser를 LoggedUserDTO로 표시하고 엔터티> dto 매퍼를 만듭니다.

희망 사항은 밝은면으로 연결됩니다.

+0

첫 번째 옵션을 사용했지만 태그를 사용하는 순서대로 사용자의 동일한 속성과 동일한 테이블을 가리키는 user.hbm.xml에 LoggedUser 클래스를 지정했습니다. 감사! –

+0

그럼 그 좋은,하지만 난 여전히 상속 + transient 필드는 XML에서 엔터티의 복제보다 낫다고 생각하지만, 그것은 .. – JMelnik

관련 문제