帮助我Hibernate Guru .. 我有两个关系类,让我们打电话给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(?, ?, ?, ?)
所以如何使用Criteria代码创建????对于预期的列表结果列表我想使用Transformer。
由于
答案 0 :(得分:0)
试试这个:
criteria.createCriteria(A.class)
.createCriteria("id", "join_between_a_b")
.add(Restrictions.eq("some_field_of_A", someValue));
请记住,A和B必须使用id
作为标识符才能使它们加入
some_field_of_A
我指的是A类中你喜欢的任何内容,比如name
。您可以限制这些类的任何属性。