0

データベースのシンプルなレイアウトがあります。3つのテーブルがあります:
映画:move_id、タイトル、...
ユーザー:user_id、ユーザー名、...
評価:評価、コメント、...

評価テーブルは、評価、コメント、user_id、movie_idの列で構成されているように、仲介として使用したいと思います。

これはあなたがやりたい方法ではなく、評価用の別のテーブルを作成し、それ自体のPKを持っていることを私は知っていますが、Hibernateでこの構造をどのように実装しますか?

ありがとう。

4

2 に答える 2

0

クラスを次のように構成します。

public class Movie {

  @Id
  @GeneratedValue
  private long id;

  private String name;

  @OneToMany(mappedBy = "id.movie")
  private List<Rating> ratings

}

public class Rating {

  @Embeddable
  public static class RatingId {

  @ManyToOne
  @JoinColumn(name = "movieId")
  private Movie movie;

  @ManyToOne
  @JoinColumn(name = "userId)
  private User user;

 // Equals and Hashcode which should check the associated tables @Ids

  }

  @EmbeddedId
  private RatingId id;

  private String comment;

  private int rating;

}

public class User {

  @Id
  @GeneratedValue
  private long id;


  private String userName;
}

評価テーブルは結合テーブルであり、User と Movie への参照があります。評価はユーザーと映画によって一意に識別されるため、関連付けは複合識別子内にあります (ユーザーが映画に対して複数の評価を投稿できない場合は?)。複合キーを使用すると、ユーザーが映画の評価を削除してから再度追加する場合に、キーの重複違反が発生しないことが保証されます。Hibernate は削除の前に挿入を行います。

于 2012-06-22T16:38:44.663 に答える
0

評価エンティティには、user_id と movie_id を持つ複合主キーを使用できます。

http://docs.jboss.org/hibernate/orm/3.3/reference/en/html/mapping.html#mapping-declaration-compositeidを参照してください

于 2012-06-22T16:26:01.827 に答える