回答

收藏

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

技术问答 技术问答 194 人阅读 | 0 人回复 | 2023-09-12

我有一个Posts模型,每个帖子也包括Blocks(还有一个模型)。我正在使用这个网站的播放框架想做的是在一页上显示它X帖子的数量及其所有块。JPA(或者实现播放框架,不知道是哪个)find()我可以在控制器中查询帖子的方法,然后我可以将帖子列表发送到我的视图中,如下所示:( r* ?; a' i$ m- F
render(postList);我想知道的是把每个帖子的块发送到视图的最好方法是什么。getBlocks()Post在模型中添加一种方法,该方法发送回一种方法blocksList,然后从视图中调用,但这对我来说似乎很乱,因为我要从视图中获取块,所以会被破坏MVC目的。还是我错了?
! p5 B" p+ U2 y% h, M是JPA还是Play!提供一些与帖子一起检索块的方法吗?
' \4 ?+ G% I, ^$ T; V4 T$ U# P% r这就是我的Post模型现在的样子,没有getter和setter:@Entity
: M' k7 w! o* p1 s: y! w@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[B] blockList;    public List[B] getBlocks()(){        List[B] block = null;        return blockList;   我该怎么办?
: B% n5 Q, O; G. @( u' V                                                               
8 N3 Q9 g6 n+ k1 V( |6 x    解决方案:                                                               
( ]+ V, }6 K1 @9 B: v                                                                只需使用一对多关键字:* T' x: Q' Z. e) k: b. h
@OneToManyprivate List[B] blockList;但目前还不清楚是否需要getBlocks方法。如果您只从数据库中获取块,则不需要此方法。( a% q% E" E' U- E# R8 G/ [
注:您可能想阅读更多信息@OneToMany。例如,您可以添加选项@OneToMany(cascade ={CascadeType.PERSIST,CascadeType.REMOVE}),让你持久Post当数据库或从数据库中删除数据库时,内部数据库blockList执行相同的操作。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则