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 的一个外键和主键表 B 的另一个外键,

我想从表 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(?, ?, ?, ?)

那么我必须如何创建标准代码????对于预期的列表结果列表,我想使用 Transformer。

谢谢

4

1 回答 1

0

尝试这个:

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


请记住,A 和 B 必须具有id作为它们的标识符才能使它们加入。我的意思是你喜欢A类的任何东西,
例如。您可以对这些类的任何属性进行限制。some_field_of_Aname

于 2012-07-16T12:31:49.017 回答