Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring:复制对象而不将映射设置为null。_Java_Spring_Spring Mvc - Fatal编程技术网

Java Spring:复制对象而不将映射设置为null。

Java Spring:复制对象而不将映射设置为null。,java,spring,spring-mvc,Java,Spring,Spring Mvc,我正在从事一个SpringMVC项目,在该项目中,我希望复制对象以实现复制功能。我一直在使用springFramework中的BeanUtils,效果很好。唯一的问题是我必须手动设置为不复制与该对象关联的所有映射对象。如果不这样做,我会得到一个错误,即数据库中已存在映射对象的条目 我怎样才能解决这个问题 代码: GroupCanvas destinationGroupCanvas = new GroupCanvas(); BeanUtils.copyPropert

我正在从事一个SpringMVC项目,在该项目中,我希望复制对象以实现复制功能。我一直在使用
springFramework
中的
BeanUtils
,效果很好。唯一的问题是我必须手动设置为不复制与该对象关联的所有映射对象。如果不这样做,我会得到一个错误,即数据库中已存在映射对象的条目

我怎样才能解决这个问题

代码:

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<>();
@JsonIgnore
@OneToMany(mappedBy=“currentcanvas”,fetch=FetchType.LAZY,cascade=CascadeType.REMOVE)
私有集ownedsection=新HashSet();
@OneToMany(mappedBy=“favoriteCanvases”,fetch=FetchType.LAZY,cascade=CascadeType.REMOVE)
私有集favoriteCanvasSet=新HashSet();

我不想手动指定不复制关联。这对维护很有帮助,因此我不必每次更改GroupCanvas模型或类似模型时都再次返回此代码并向其添加一行代码。我能做什么?多谢各位

我认为您可以通过指定第三个参数来忽略不希望复制的属性

此方法将复制给定源bean的属性值 进入给定的目标bean,忽略给定的“ignoreProperties”


我们通常会在项目中使用将一种类型的对象转换为另一种类型。

我不是将对象从一种类型转换为另一种类型,而是复制。ignoreProperties听起来不错,但这也意味着对于映射中的任何更改,我必须在复制对象的所有位置查找并更改ignoreProperties….@WeareBorg如何让您的实用程序知道不要复制某些属性而不必指定它们,您是否在寻找任何特定的属性,或者你有没有想过你希望在Spring中拥有什么东西?我希望JsonIgnored属性不会被自动忽略。。。我只是在寻找一种方法来指定忽略所有带有注释的复制属性@JsonIgnore@WeareBorg你的意图是好的。。但在使用Spring的BeanUtils方法和jackson的@JsonIgnore方法时,可能存在一个差距。我不推荐使用jackson,但有一种方法可以使用usign对象映射器将Bean转换为Json字符串(这样它将忽略@jsonIgnore properites),然后将Bean转换回java类
注意:我建议使用它
copyProperties(Object source, Object target, String[] ignoreProperties)