Play Framework JPA: как реализовать отношения один ко многим? - PullRequest
6 голосов
/ 06 июня 2011

У меня есть Posts модель, и каждый пост также содержит Blocks (также модель).Я использую игровую среду для этого сайта, и я хочу показать номер поста со всеми его блоками на одной странице.JPA (или реализация платформы play, не знаю, какая это) имеет метод find(), с помощью которого я могу запросить сообщения в моем контроллере, и затем я отправлю список сообщений на мой взгляд следующим образом:

render(postList);

Я хотел бы знать, как лучше всего отправить блоки для каждого сообщения в представление.Я мог бы добавить getBlocks() метод к моей модели Post, который отсылает назад blockList и вызывает его из представления, но это мне кажется грязным, и это побьет цель MVC, так как блоки будут выбираться из представления.. (или я ошибаюсь?)

Есть ли JPA или Play!предложить какой-нибудь способ получения блоков вместе с постами?

Вот как сейчас выглядит моя модель поста без методов получения и установки: @ 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 Ответ

11 голосов
/ 07 июня 2011

Просто используйте ключевое слово «один ко многим»:

@OneToMany
private List<Block> blockList;

Однако неясно, нужен ли вам метод getBlocks. Если вы просто получаете блоки из базы данных, вам не нужен этот метод.

Примечание: вы, вероятно, хотите больше узнать о @OneToMany. Например, вы можете добавить опцию @OneToMany(cascade = {CascadeType.PERSIST, CascadeType.REMOVE}), чтобы при сохранении или удалении Post из базы данных внутренний blockList делал то же самое.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...