我有4个实体:Post,SimplePost,VotingPost,这种关系中的照片
我想用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的一个子集),但这个问题很有意思,我想知道如何实现它。
感谢您的帮助。
答案 0 :(得分:1)
这种关系实际上是在Photo和Post之间。因此,您需要确定帖子是否有一张照片或许多照片。所以答案就是它无法实现。
另一种选择是建立单向关系。也就是说,帖子可能知道照片,但照片不知道帖子。因此,如果您的应用程序可以设计为SimplePost或VotingPost拥有关系并将管理关系,这可能会起作用。但是,如果没有其他查询,给定照片,您将无法分辨它属于哪个帖子。