私はある種の典型的な問題に直面しています。オブジェクト間の典型的な1-N関係を想像してみてください。正確には、User(U)とRoom(R):[U] * ---1[R]。
ここで問題が発生します。Roomは、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
}
@MappedSuperclassの代わりにRoomSuperclassで@Entityを使用することでこれを解決できる可能性があることはわかっていますが、それが適切な解決策であるかどうか、またより良い解決策があるかどうかはわかりません。