JPA MappedSuperclass с ManyToOne - PullRequest
       21

JPA MappedSuperclass с ManyToOne

3 голосов
/ 07 января 2012

Я сталкиваюсь с типичной проблемой. Представьте типичные 1-N отношения между объектами. Если быть точным, Пользователь (U) и Комната (R): [U] * --- 1 [R].

Здесь возникает проблема, Комната должна быть абстрактным базовым классом с реализациями, например, BlueRoom, RedRoom. Как правильно установить отношения внутри сущности пользователя?

public interface Room { ... }
@MappedSuperclass
public abstract class RoomSuperclass implements Room { ... }
@Entity
public class BlueRoom extends RoomSuperclass { ... }
@Entity
public class RedRoom extends RoomSuperclass { ... }


@Entity
public class User {

  @ManyToOne(targetEntity = ???) // I don't know if it will be BlueRoom or RedRoom
  private Room room; // ManyToOne cannot be applied on mapped superclass
}

Я знаю, что это можно решить, используя @Entity для RoomSuperclass вместо @MappedSuperclass, но я не уверен, что это хорошее решение и есть ли какое-нибудь лучшее.

1 Ответ

1 голос
/ 10 апреля 2012

По комментариям под постом. Объявление суперкласса как @Entity является решением.

...