带有ManyToOne的JPA MappedSuperclass

时间:2012-01-07 19:28:56

标签: jpa entity mappedsuperclass

我面临着一些典型的问题。想象一下物体之间典型的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来解决,但我不确定它是否是一个好的解决方案,如果有更好的解决方案。

1 个答案:

答案 0 :(得分:1)

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