Where 조항과 일대일을 매핑하는 방법이 있습니까?
-
19-08-2019 - |
문제
최대 절전 모드 / nhibernate를 처음 접했지만 주제에 대한 무지를 실례합니다.
이것이 내 데이터베이스 테이블의 모습입니다.
<bincontents>
<id>5873715</id>
<title>Video Title</title>
<sortorder>0</sortorder>
<itemid>23079</itemid>
<itemtype>VIDEO</itemtype>
</bincontents>
<bincontents>
<id>5873716</id>
<title>Clip Title</title>
<sortorder>1</sortorder>
<itemid>131854</itemid>
<itemtype>CLIP</itemtype>
</bincontents>
Where 조항과 일대일을 매핑하는 방법이 있습니까?
따라서 Bincontent 객체에는 비디오 나 클립의 항목 유형이있을 수 있습니다. 이것들은 줄로 키가 있으며 불행히도 그것을 바꿀 수 없습니다.
따라서 ItemType 필드에 "비디오"라고 말하면, 다중 하나의 "비디오"객체를 갖고 싶습니다. .
돕다!
이 경우 많은 것을 사용하고 싶은지 확실하지 않습니다. 아마도 일대일?
해결책
상속 후보가있는 것처럼 들립니다. 추상적 인 기본 유형의 Bincontents가있는 경우, 비디오 매핑 만 포함 된 파생 된 클래스의 VideoBincontents와 클립 매핑 만 포함 된 ClipBincontents가 있습니다. ItemType은 차별자입니다. 자세한 내용은 여기를 살펴보십시오. http://www.hibernate.org/hib_docs/reference/en/html/inheritance.html
다른 팁
수업에 비디오와 클립 객체를 모두 가지고 있지 않으며 둘 다 동시에 채워지지 않았는지 확인할 수 없습니까? 현재 클래스 구조와 같은 더 많은 정보가 필요할 수 있습니다. 또한 빈 객체 당 하나의 비디오가 있을까요?
아마도 이것은 당신이 찾고있는 것보다 더 복잡하지만, 아마도 쓰레기통을위한 기본 클래스를 설정하고 비디오 또는 클립 클래스가있을 수있을 것 같습니다. 상속의 계층 구조 당 테이블을 사용하면 기존 테이블 구조를 사용할 수 있습니다.
이렇게하면 각 하위 클래스마다 다른 매핑을 제공 할 수 있습니다.
모든 매핑을 볼 수 있습니다. '모든'매핑을 사용하면 다형성 연관성을 정의 할 수 있습니다.
확인하다 이것 (단락 5.2.4)
어쨌든, 나는 당신의 '도메인'에 익숙하지 않지만 Jim도 그 점이 있다고 생각합니다. 아마도 데이터 모드와 도메인 모델 (가능한 경우)을 검토하고 여기에 어떤 종류의 상속이 적합하지 않은지 확인해야합니다.