有类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.setBs(bs);
session.save(a);
来保存与b与a之间关系,
但不能通过
b.setAs(as);
session.save(b);
来保存b与a之间的关系,也就是说实际上成了单向关联
我好像找到问题所在了,是因为我先保存再