1

1이 다른 개체의 부모 인 2 개의 엔터티를 만드는 적절한 방법은 무엇입니까? 우리가 EmailOutboxSchedule에 지정된 날짜에 나가서 EmailOutbox에서 즉시 이동 전자 우편 및 이메일을 가지고최대 절전 모드의 엔터티 계층

Email_Outbox 
------------ 
Id 
Email_Id 
Date_Sent 

Email_Outbox_Schedule 
--------------------- 
Id 
Email_Id 
Date_Sent 
Date_to_Send 

아주 간단한 예를 들어, 우리는 다음과 같은 두 테이블이있다. 이상적으로는 Java의 클래스 계층 구조이며 EmailOutboxScheduleEmailOutbox까지 확장됩니다. 그런 다음 1 개의 추가 필드 (dateToSend) 만 지정하면되고 일반적인 객체 계층 구조 기능을 이용할 수 있습니다. 최대 절전 모드에서이 작업을 수행하는 데 문제가 있습니까? 특별한 방법으로 2 개의 엔티티에 주석을 달 필요가 있습니까?

답변

0

this document으로가는 해결책은 @MappedSuperclass를 부모 클래스 Email_Outbox에 사용하고 Scheduled_Email_Outbox 및 Immediate_Email_Outbox라는 두 개의 하위 클래스를 사용하는 것입니다.

Immediate_Email_Outbox는 @Entity 주석을 제외하고는 비어 있습니다.

빈 클래스는 거의 우아하지 않지만 작동하는 것처럼 보입니다. (최대 절전 모드와 우아함은 어쨌든 호환되지 않습니다.)

+0

그것은 작동하지만 필수적인 계층 구조를 나타내지는 않습니다. 그러나 합리적인 솔루션입니다 (예 : null 가능한 일정 열을 갖는 것만 큼 합리적입니다). –

+0

최대 절전 모드 및 우아함에 대한 매우 재미있는 설명 :). 이것은 가장 합리적인 것 같습니다. 필자의 의견으로는 null 입력 가능 일정 열보다 확실히 좋습니다. –

2

대략 Hibernate inheritance mapping을 읽어야합니다. 논리적으로 그러나 나는 그 일정을 구입하지 않는다. 일정이 개별 메시지의 속성이라고 더 많이 들립니다. 그래서 그냥 nullable 속성 date to send 단일 메시지 엔터티에있을 수 있습니다?

+1

+1 "상속 계층 구조가 아닙니다" –

+0

즉시 나가야하는 이메일에는 dateToSend를 null로 설정할 수 있지만 별도의 테이블과 클래스가 있어야합니다. EmailOutboxSchedule이 EmailOutbox의 서브 클래스인지 여부에 대해서는 동의하지 않지만이 특정 예제보다 최대 절전 모드에서 개체 계층 구조를 나타내는 적절한 메커니즘에 대해 더 궁금합니다. Hibernate 상속 매핑에 대한 링크는 이것과 관련이없는 것처럼 보이는 JIRA 문제입니다.이 매뉴얼의 10 장에서는 상속 매핑을 설명하지만 실제로는 훨씬 더 단순한 2 개의 별도 테이블 - 1 클래스를 원합니다. 계층. –

+0

잘못된 링크에 대해 사과 드리며 내 탭의 클립 보드에 붙어 있어야합니다. 수정 됨. 정말로 계층을 사용하기를 원한다면, 당신이 묘사 한 테이블을 사용하기를 원한다면'콘크리트 클래스 당 테이블 '을 고려할 수 있습니다. –

관련 문제