1

私は現在、JPAを使用するplayframework1.2.4を使用して自分と友達のためにボードをプログラミングしています。ビューメカニズムに到達するまでは、すべて問題ありませんでした。

問題は、すべてのユーザーが複数のビューエントリを持つことができるということです。すべてのトピックに複数のビューエントリを含めることもできるので、これが私のビューモデルです。

@Entity
public class ForumTopicView extends Model
{

    @Required
    @ManyToOne
    public ForumTopic   topic;

    @Required
    @ManyToOne
    public User         user;

    @Required
    public Date         viewDate;

}

一方、トピックと接続されたユーザーのビューは1つだけです。

これが私のトピックモデルです:

@Entity
public class ForumTopic extends Model
{

    // ...

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

    // ...
}

これをカスタマイズして、ユーザーが接続ユーザーである必要があり、トピックごとに1つのビューのみが選択されるようにするにはどうすればよいですか。

助けてくれてありがとう!MRu

@Yogendra Singh:はい、その通りです。すべてのユーザーが1つのトピックを表示できます。

4

1 に答える 1

3

アソシエーションの一方がManyToOneである場合、もう一方はOneToOneではなくOneToManyである必要があります。

すべてのトピックには複数のビューがあります(これらのビューの1つは現在のユーザー用です)。各ユーザーには複数のビューがあります(これらのビューの1つは特定のトピック用です)。したがって、2つのOneToMany/ManyToOneアソシエーションがあります。

何をしたいのかは明確ではありませんが、クエリを実行して必要なものを取得する必要があると思います。現在のユーザーに関連付けられ、特定のトピックのリストに対応するビューのリストが必要な場合、クエリは単純に次のようになります。

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

50のトピックがある場合、50のクエリは必要ありません。上記のものは、すべてのビューを一度に取得します。

于 2012-10-11T21:39:41.270 に答える