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

时间:2011-06-06 19:53:43

标签: java sql model-view-controller jpa playframework

我有Posts模型,每个帖子还包含Blocks(也是模型)。我正在使用这个网站的播放框架,我想要做的是在一个页面上显示所有帖子的X号帖子。 JPA(或者播放框架的实现,不知道它是哪一个)有find()方法,我可以在其中查询控制器中的帖子,而不是像我这样将帖子列表发送到我的视图:< / p>

render(postList);

我想知道的是将每个帖子的块发送到视图的最佳方式。我可以在我的Post模型中添加一个getBlocks()方法,它发送回一个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;
    }

}

我该怎么做?

1 个答案:

答案 0 :(得分:11)

只需使用一对多关键字:

@OneToMany
private List<Block> blockList;

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

注意:您可能希望在@OneToMany上阅读更多内容。例如,您可以添加选项@OneToMany(cascade = {CascadeType.PERSIST, CascadeType.REMOVE}),这样当您从数据库中保留或删除Post时,内部blockList也会这样做。