问题可能不是很明确,下面我说的详细点:
我有两个类 一个是project 一个是building 关系是一对多(project为1,building为多)
数据库:
project:
id int(11) not null AUTO_INCREMENT,
serialNumber varchar(30) not null,
等等。。。
building
id int(11) not null auto_increment,
buildingNum int(11) default 0,
projectId int(11) default 0,//于上面project的id关联
等等
在Project类中做onetomany关联
private List<Building> buildingList = new ArrayList<Building>();
@OneToMany(mappedBy = "project", cascade = CascadeType.ALL)
public List<Building> getBuildingList() {
return buildingList;
}
public void setBuildingList(List<Building> buildingList) {
this.buildingList = buildingList;
}
在Building类中做关联
private Project project;// 所属项目
@ManyToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "projectId")
public Project getProject() {
return project;
}
public void setProject(Project project) {
this.project = project;
}
关联做好之后,我在jsp中添加building的时候,需要选择building所属的项目,传给后台的是一个long型的prjectId,如下:
<input name="building.project.id" />
出现错误:错误时project的serialNumber不能为空,我看了看console中的信息,看到首先是对building进行了insert,然后对project进行了update,由于在前台传给project的只是一个id,而serialNumber为空,所以报了project的serialNumber不能为空的错误,
请问大侠们,那怎么进行插入呢?是我配置的有问题?还是咋地?
------最佳解决方案--------------------------------------------------------
把级联操作去掉。
------其他解决方案--------------------------------------------------------
去掉之后是可以的,但是没有级联之后是不是会产生影响?
------其他解决方案--------------------------------------------------------
没有级联就是当对这个类对象进行操作时不会对相关联的类进行级联操作
看具体需求,例如在一对多情况下,多的一方操作了不希望一的一方也跟着操作这样的。
往往是一的一方更新后才对多的一方也同时级联更新
------其他解决方案--------------------------------------------------------
谢谢