2010-02-19 2 views
0

데이터베이스에 클래스를 저장하기 위해 ActiveRecord를 사용하고 있습니다.Castle 프로젝트에서 생성하는 다형 클래스 ActiveRecord

클래스 계층 구조를 가지고 있습니다. 인간과 클래스 Human에서 상속 된 남자와 여자. 휴먼 데이터베이스 테이블에는 남성의 경우 0, 여성의 경우 1 인 섹스 필드가 있습니다. 나는 성 필드에 관해 클래스 Human을로드 할 수 있기를 원합니다. 즉, Sex가 0이면 클래스 Human의로드는 실제로 Man 클래스의 인스턴스를 작성해야합니다 (따라서 Human의 필드 외에 Man 테이블의 일부 필드를 읽어야합니다. 표).

CastleProject ActiveRecord 속성의 도움으로 가능합니까? 그렇지 않은 경우 대체 가능한 메소드를 재정의하는 것이 가능합니까?

답변

1
당신은 NHibernate에 의해 사용되는 차별이 될 것입니다 테이블에 대한 Single Table Inheritance

성 열을 이야기

.

EDIT : Human에 대한 추가 필드가있는 경우 하나의 큰 테이블에 넣거나 분할하여 Human 필드를 가져 오는 Class Table Inheritance (Men 객체를 가져올 때마다 JOIN을 의미)를 사용할 수 있습니다. Man 테이블의 Human 테이블과 Man 필드에서 가져옵니다.

+0

감사합니다. Nebakanezer, 귀하의 회신은 매우 유용합니다. 그러나, 나는 남자 또는 여자 대신에 항상 인간 계급을 얻는다는 문제가있다. DiscriminatorValue를이 클래스에 할당하지는 않았지만 남자와 여자를 위해했습니다. 그러나 이것은 도움이되지 않습니다. Human 클래스의 FindAllByProperty를 사용하고 있으며 Sex 필드에 따라 Man 및 Human 인스턴스 목록을 반환 할 것으로 기대합니다. 내가 뭘 잘못 했니? – Alex

+0

해결 방법을 직접 찾아 냈습니다. 내 하위 클래스 (남자/여자)는 내부 였고 Human은 공개되었습니다. 인간 인스턴스가 끊임없이 생성되는 이유입니다. – Alex

관련 문제