我正在做一个Spring-MVC项目,在这个项目中,我想要复制对象以实现复制功能。我一直在使用springFramework的BeanUtils,它工作得很好。唯一的问题是我必须手动设置为不复制与该对象关联的所有映射对象。如果我不这样做,我会得到一个错误,说明DB中已经存在映射对象的条目。
我如何解决这个问题?
代码:
GroupCanvas destinationGroupCanvas = new GroupCanvas();
BeanUtils.copyProperties(groupCanvas,destinationGroupCanvas);
destinationGroupCanvas.setMcanvasid(0);
// Below ones are the mappings as described in the model
destinationGroupCanvas.setFavoriteCanvasSet(null);
destinationGroupCanvas.setOwnedsection(null);GroupCanvas模型映射:
@JsonIgnore
@OneToMany(mappedBy = "currentcanvas", fetch = FetchType.LAZY, cascade = CascadeType.REMOVE)
private Set<GroupSection> ownedsection = new HashSet<>();
@OneToMany(mappedBy = "favoriteCanvases", fetch = FetchType.LAZY, cascade = CascadeType.REMOVE)
private Set<FavoriteCanvas> favoriteCanvasSet = new HashSet<>();我不想手动指定不复制关联。这对维护很有帮助,所以每次更改GroupCanvas模型或类似的代码时,我都不必返回到此代码并向其中添加一行。我能做什么?谢谢。
发布于 2016-03-10 22:38:22
我认为您可以通过向BeanUtils.copyProperties指定第三个参数来忽略不想复制的属性
copyProperties(Object source, Object target, String[] ignoreProperties) 此方法会忽略给定的"ignoreProperties“,将给定源bean的属性值复制到给定的目标bean中。
我们通常会在项目中使用Converters将一种类型的对象转换为另一种类型。
https://stackoverflow.com/questions/35918956
复制相似问题