0

Hibernate Guru を助けてください..私には 2 つの関係クラスがあります。クラス A と B を呼び出しましょう

@Entity
@Table(name="A")
public class A extends Serializable{

      @Id
      @Column(name="a_id")
      private int id;
      @Column(name="a_name")
      private String name;

     /*
      *.....Setter and Getter
      */
}



@Entity
@Table(name="B")
public class B extends Serializable{

      @Id
      @Column(name="b_id")
      private int id;
      @ManyToMany(
          fetch= FetchType.EAGER,
          targetEntity=package.A.class,
          cascade={CascadeType.ALL}
      )
      @JoinTable(
          name="B_A",
          joinColumns=@JoinColumn(name="b_id"),
          inverseJoinColumns=@JoinColumn(name="a_id")
      )
      @Fetch(FetchMode.SUBSELECT)
      private List<A> list;

     /*
      *.....Setter and Getter
      */
}

Hibernate は 3 つのテーブル A、B、および B_A を生成します。テーブル B_A には 2 つの外部キーがあり、主キー テーブル A の外部キーが 1 つ、主キー テーブル B の外部キーがもう 1 つ、

クエリのように、テーブル A からデータを選択したい:

select * from A a inner join B_A ba on ba.a_id = a.id inner join B b on b.b_id = ba.b_id where b.id in(?, ?, ?, ?)

では、どのように基準コードを作成する必要がありますか???? 期待されるリストの結果リストには、トランスフォーマーを使用したいと考えています。

ありがとう

4

1 に答える 1

0

これを試して:

criteria.createCriteria(A.class)
.createCriteria("id", "join_between_a_b")
.add(Restrictions.eq("some_field_of_A", someValue));


idA と B を結合させるには、識別子として を持たなければならないことを覚えておいてください。たとえば、クラスAで好きなものを意味し
ます。これらのクラスのプロパティを制限できます。some_field_of_Aname

于 2012-07-16T12:31:49.017 に答える