3

我面临着一种典型的问题。想象一下对象之间典型的 1-N 关系。准确地说是用户(U)和房间(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
}

我知道这可以通过在 RoomSuperclass 上使用 @Entity 而不是 @MappedSuperclass 来解决,但我不确定它是否是好的解决方案以及是否有更好的解决方案。

4

1 回答 1

0

根据帖子下的评论。将超类声明为@Entity 是解决方案。

于 2012-04-10T09:43:40.110 回答