JPA模型关系

时间:2012-10-10 01:40:00

标签: java jpa playframework playframework-1.x

我正在为我和我的朋友编写一个使用JPA的playframework 1.2.4的电路板。 一切都很好,直到我来到视图机制。

问题是,每个用户都可以拥有多个视图条目。 每个主题也可以有多个视图条目,所以这是我的视图模型:

@Entity
public class ForumTopicView extends Model
{

    @Required
    @ManyToOne
    public ForumTopic   topic;

    @Required
    @ManyToOne
    public User         user;

    @Required
    public Date         viewDate;

}

另一方面,主题和连接用户只有一个视图。

这是我的主题模型:

@Entity
public class ForumTopic extends Model
{

    // ...

    @OneToOne(mappedBy = "topic") // TODO: and the connected user
    public ForumTopicView       view;

    // ...
}

如何自定义用户必须是连接用户,并且每个主题只选择一个视图。

感谢您的帮助!! MRU

@Yogendra Singh:是的,这是正确的。每个用户都可以查看一个主题。

1 个答案:

答案 0 :(得分:3)

如果协会的一方是ManyToOne,则另一方必须是OneToMany,而不是OneToOne。

每个主题都有多个视图(其中一个视图适用于当前用户)。每个用户都有多个视图(其中一个视图用于给定主题)。所以你有两个OneToMany / ManyToOne关联。

目前还不清楚你想做什么,但我认为你需要执行一个查询来获得你想要的东西。如果您想要的是与当前用户关联并且与给定主题列表相对应的视图列表,则查询只是

select view from ForumTopicView view
where view.user = :currentUser
and view.topic in (:listOfTopics)

如果您有50个主题,则无需50个查询。上面的内容一次检索所有视图。