JPA中两个关系中的一个参数

时间:2014-12-01 02:15:50

标签: java hibernate jpa persistence

我有4个实体:Post,SimplePost,VotingPost,这种关系中的照片

  • 1 SimplePost有1张照片。
  • 1 VotingPost有1张或更多张照片

我想用JPA实现它。

实体定义:

abstract class Post{ /* some variable */ }

class SimplePost extends Post {
     @OneToOne
     private Photo photo;
}

class VotingPost extends Post {
    @OneToMany
    private List<Photo> photos;
}
class Photo {
    //which annotation should I use here ????
    //@ManyToOne or
    //@OneToOne
    private Post post;
}

但我有一个问题,因为在SimplePost和Photo之间有一个OneToOne关系,而在VotingPost和Photo之间有一个OneToMany关系,所以我不知道我应该在照片类中使用哪个注释后变量。

我知道我只能使用包含照片列表的VotingPost来实现它(因此SimplePost将是VotingPost的一个子集),但这个问题很有意思,我想知道如何实现它。

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

这种关系实际上是在Photo和Post之间。因此,您需要确定帖子是否有一张照片或许多照片。所以答案就是它无法实现。

另一种选择是建立单向关系。也就是说,帖子可能知道照片,但照片不知道帖子。因此,如果您的应用程序可以设计为SimplePost或VotingPost拥有关系并将管理关系,这可能会起作用。但是,如果没有其他查询,给定照片,您将无法分辨它属于哪个帖子。

相关问题