有类A与类B多对多映射,
类A代码
[code="java"]
@Entity
@Table(name="a")
public class A {
@Id
@GeneratedValue
private Integer id;
private String name;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
@ManyToMany(cascade={CascadeType.MERGE,CascadeType.PERSIST}
)
@JoinTable(name="a_b",
joinColumns={@JoinColumn(name="a_id")},
inverseJoinColumns={@JoinColumn(name="b_id")}
)
private List<B> bs;
public List<B> getBs() {
return bs;
}
public void setBs(List<B> bs) {
this.bs = bs;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}[/code]
类B代码
[code="java"]
@Entity
@Table(name = "b")
public class B {
@Id
@GeneratedValue
private Integer id;
private String name;
@ManyToMany(cascade = { CascadeType.PERSIST, CascadeType.MERGE }, mappedBy = "bs", targetEntity = A.class)
private List<A> as;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public List<A> getAs() {
return as;
}
public void setAs(List<A> as) {
this.as = as;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
[/code]
现在的问题是:
A a1 = (A)session.get(A.class, 1);
System.out.println(a1.getBs().size());
可以正常通过A获得B
B b1 = (B)session.get(B.class, 1);
System.out.println(b1.getAs().size());
但不能通过如上代码 通过B获得A