Java Hibernate中最后一次迭代覆盖的值
我有以下实体: 汽车/汽车/汽车/定制到Java Hibernate中最后一次迭代覆盖的值,java,hibernate,list,loops,Java,Hibernate,List,Loops,我有以下实体: 汽车/汽车/汽车/定制到 Car - long carId Vehicle - long vehicleId; Auto - long autoTypeId; CustomDTO - long autoTypeId; - String autoTypeName; - List<Car> cars; public List<Car> getCarByVehicleAndType(long vehicleId, long autoTypeId){ L
Car
- long carId
Vehicle
- long vehicleId;
Auto
- long autoTypeId;
CustomDTO
- long autoTypeId;
- String autoTypeName;
- List<Car> cars;
public List<Car> getCarByVehicleAndType(long vehicleId, long autoTypeId){
List<Car> cars = new ArrayList<Car>();
List<Car> carsInCarVehicleType = carService.getCarsInCarVehicleType(vehicleId, autoTypeId); //DAO Fetch cars IN Cat-Vehicle-Type table
for(Car car : carsInCarVehicleType){
car.selected(true);
}
List<Car> carsNotInCarVehicleType = carService.getCarsNotInCarVehicleType(vehicleId, autoTypeId); //DAO Fetch cars NOT IN Cat-Vehicle-Type table
for(Car car : carsNotInCarVehicleType){
car.selected(false);
}
cars.addAll(carsInCarVehicleType);
cars.addAll(carsNotInCarVehicleType);
return cars;
}
public List<CustomDTO> constructVehicleDTO(long vehicleId){
List<Auto> autos = autoService.getAutos(); //DAO Fetch all autos
List<CustomDTO> dtoList = new ArrayList<CustomDTO>();
for(Auto auto : autos){
CustomDTO dto = new CustomDTO();
dto.setAutoTypeId(auto.getAutoTypeId());
dto.setAutoTypeName(auto.getAutoTypeName());
dto.setCars(getCarByVehicleAndType(vehicleId, auto.getAutoTypeId());
dtoList.add(dto);
}
return dtoList;
}
汽车
-长龋
车辆
-长车辆;
自动的
-长同源型;
定制
-长同源型;
-字符串自动类型名称;
-列出车辆清单;
公共列表getCarByVehicleAndType(长车辆ID、长自动类型ID){
List cars=new ArrayList();
List carsInCarVehicleType=carService.getCarsInCarVehicleType(vehicleId,autoTypeId);//在Cat车辆类型表中获取车辆
用于(汽车:carsInCarVehicleType){
car.selected(true);
}
List carsNotInCarVehicleType=carService.getCarsNotInCarVehicleType(vehicleId,autoTypeId);//DAO获取不在Cat车辆类型表中的车辆
用于(汽车:汽车TincarveHicleType){
car.selected(false);
}
cars.addAll(carsInCarVehicleType);
cars.addAll(carsNotInCarVehicleType);
返回车辆;
}
公共列表已构建车辆到(长车辆ID){
List autos=autoService.getAutos();//DAO获取所有自动
List dtoList=new ArrayList();
用于(自动:自动){
CustomDTO dto=新CustomDTO();
setAutoTypeId(auto.getAutoTypeId());
setAutoTypeName(auto.getAutoTypeName());
setCars(getCarByVehicleAndType(vehicleId,auto.getAutoTypeId());
dtoList.add(dto);
}
返回数据集成商;
}
在上面的方法中-dto.setCars(…)
在返回dtoList时被最后一次迭代值覆盖。因此,对于每辆车,我都会得到相同的车列表集。这在普通Java操作中不会发生。我怀疑我在这里混淆了Hibernate对象的生命周期
如果我不清楚,请告诉我。根据代码,我看不到Hibernate有任何问题。请尝试打印
GetCarbyVehiclandType
方法返回的值,看看这些值是否正确。ConstructiveVehicledTo
中的列表类型为什么不匹配?您正在创建list
type的列表并返回list
。为什么会这样?很抱歉,这是一个错误。我试图简化命名以避免问题中的混淆。您能否显示getCarbyVehiclandType(vehicleId,auto.getAutoTypeId()
函数返回的值&您是如何调用ConstructionVehicledTo(long vehicleId)的
?如何显示值?是否重复?