我把一个entity配置成一棵树,添加,查询这个棵树都没有问题,当我更新他的父节点的时候他并没有发送SQL语句,可是更新其他属性,比如name就可以。
tmp.setParent(其他节点或null)//失败,没有发送SQL语句
tmp.setName(xxxx)//可以更新成功
@Entity
@Table(name="_materialCategory")
public class MaterialCategory { private int id;
private String name;
private int level;
private int position;
private boolean leaf;
private MaterialCategory parent;
private List<MaterialCategory> children = new ArrayList<MaterialCategory>(); @Id
@GeneratedValue
public int getId() {
return id;
} public void setId(int id) {
this.id = id;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public int getLevel() {
return level;
} public void setLevel(int level) {
this.level = level;
} public int getPosition() {
return position;
} public void setPosition(int position) {
this.position = position;
} public boolean isLeaf() {
return leaf;
} public void setLeaf(boolean leaf) {
this.leaf = leaf;
} @ManyToOne
@JoinColumn(name="pid")
public MaterialCategory getParent() {
return parent;
} public void setParent(MaterialCategory parent) {
this.parent = parent;
} @OneToMany(fetch=FetchType.EAGER)
@JoinColumn(name="pid")
public List<MaterialCategory> getChildren() {
return children;
} public void setChildren(List<MaterialCategory> children) {
this.children = children;
}
public void addChild(MaterialCategory mc) {
children.add(mc);
}
}
tmp.setParent(其他节点或null)//失败,没有发送SQL语句
tmp.setName(xxxx)//可以更新成功
@Entity
@Table(name="_materialCategory")
public class MaterialCategory { private int id;
private String name;
private int level;
private int position;
private boolean leaf;
private MaterialCategory parent;
private List<MaterialCategory> children = new ArrayList<MaterialCategory>(); @Id
@GeneratedValue
public int getId() {
return id;
} public void setId(int id) {
this.id = id;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public int getLevel() {
return level;
} public void setLevel(int level) {
this.level = level;
} public int getPosition() {
return position;
} public void setPosition(int position) {
this.position = position;
} public boolean isLeaf() {
return leaf;
} public void setLeaf(boolean leaf) {
this.leaf = leaf;
} @ManyToOne
@JoinColumn(name="pid")
public MaterialCategory getParent() {
return parent;
} public void setParent(MaterialCategory parent) {
this.parent = parent;
} @OneToMany(fetch=FetchType.EAGER)
@JoinColumn(name="pid")
public List<MaterialCategory> getChildren() {
return children;
} public void setChildren(List<MaterialCategory> children) {
this.children = children;
}
public void addChild(MaterialCategory mc) {
children.add(mc);
}
}
@Test
public void updateTest() {
//MaterialCategory mc1 = service.get(8);
MaterialCategory mc2 = service.get(4);
mc2.setParent(null);
service.update(mc2);
}
@Test
public void deleteTest() {
MaterialCategory mc = service.get(4);
service.delete(mc);
}