小编典典

Play框架JPA:如何实现一对多关系?

sql

我有一个Posts模型,每个帖子还包含Blocks(也有一个模型)。我正在使用该网站的播放框架,我想做的是在一页上显示X帖子的数量及其所有块。JPA(或播放框架的实现,不知道它是哪个)具有find()我可以在控制器中查询帖子的方法,然后我可以将帖子列表发送到我的视图中,如下所示:

render(postList);

我想知道的是将每个帖子的块发送到视图的最佳方法是什么。我可以在getBlocks()Post模型中添加一个方法,该方法发送回一个blocksList,然后从视图中调用它,但是这对我来说似乎很杂乱,并且由于将要从视图中获取块,因此将破坏MVC的目的。还是我错了?)

是JPA还是Play!提供一些与帖子一起检索块的方法吗?

这就是我的Post模型现在的样子,没有getter和setter:@Entity

@Table(name="posts")
public class Post extends GenericModel{

    @Id
    @Column(name="post_id")
    private int id;

    @Column(name="post_situation")
    private String situation;

    @Column(name="post_date")
    private Date date;

    @Column(name="post_userid")
    private int userid;

    private List<Block> blockList;
    public List<Block> getBlocks() {
        List<Block> block = null;
        return blockList;
    }

}

我应该怎么做?


阅读 208

收藏
2021-05-23

共1个答案

小编典典

只需使用一对多关键字:

@OneToMany
private List<Block> blockList;

但是,尚不清楚是否需要该getBlocks方法。如果您只是从数据库中获取块,则不需要此方法。

注意:您可能想阅读有关的更多信息@OneToMany。例如,您可以添加选项@OneToMany(cascade = {CascadeType.PERSIST, CascadeType.REMOVE}),以便当您持久化Post数据库或从数据库中删除数据库时,内部数据库blockList执行相同的操作。

2021-05-23