Я сталкиваюсь с типичной проблемой. Представьте типичные 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, но я не уверен, что это хорошее решение и есть ли какое-нибудь лучшее.