@Mapper(componentModel = "spring", unmappedTargetPolicy = ReportingPolicy.IGNORE)
@DecoratedWith(MlpConfigMapperDecorator.class)
public interface MlpConfigMapper {
@Mapping(target = "epochNumber", source = "epochs")
@Mapping(target = "activationFunction", ignore = true)
MlpConfig toEntity(CustomMlpConfigRequest mlpConfigDto);
}
public abstract class MlpConfigMapperDecorator implements MlpConfigMapper {
@Autowired
@Qualifier("delegate")
private MlpConfigMapper delegate;
@Autowired
private ActivationFunctionService activationFunctionService;
@Override
public MlpConfig toEntity(CustomMlpConfigRequest mlpConfigDto) {
MlpConfig mlpConfig = delegate.toEntity(mlpConfigDto);
mlpConfig.setActivationFunction(activationFunctionService.findByType(mlpConfigDto.getActivationFunction()));
return mlpConfig;
}
}
public class CustomMlpConfigRequest {
private String name;
private String description;
private int batchSize;
private int epochs;
private List<LayerDto> layers;
private String activationFunction;
}
public class LayerDto {
public String type;
public int orderNumber;
public int neuronsNumber;
}
public class MlpConfig {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;
private String name;
private String description;
private int batchSize;
private int epochNumber;
@JoinColumn(nullable = false, name = "activationFunction_id")
@ManyToOne(fetch = FetchType.LAZY)
private ActivationFunction activationFunction;
@JsonManagedReference
@Column(nullable = false)
@OneToMany(mappedBy = "mlpConfig", cascade = CascadeType.ALL)
private List<Layer> layers;
@ManyToOne(fetch = FetchType.LAZY)
private User user;
private Date lastUpdated;
}
public class Layer {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;
private ELayer type;
private int neuronsNumber;
private int orderNumber;
@EqualsAndHashCode.Exclude
@ToString.Exclude
@ManyToOne(fetch = FetchType.LAZY, optional=false)
@JoinColumn(name = "mlpConfig_id", nullable=false)
@JsonBackReference
private MlpConfig mlpConfig;
}
生成的子实体映射器方法(缺少setChildren或setmlpconfig()
,在我的例子中):
@Override
public LayerDto layerToDto(Layer layer) {
if ( layer == null ) {
return null;
}
LayerDto layerDto = new LayerDto();
if ( layer.getType() != null ) {
layerDto.setType( layer.getType().name() );
}
layerDto.setOrderNumber( layer.getOrderNumber() );
layerDto.setNeuronsNumber( layer.getNeuronsNumber() );
return layerDto;
}
如何让映射器在子级中设置父级?
您是否有层toEntity(LayerDto LayerDto);
此外,在实体类上的层的setter上,应该是layers.foreach(layer->layer.setmlpconfig(this));
你做了那个设置工作吗?如果不这样做,那么当您尝试获取mplConfig实体时,该实体的层可以始终为null。
我有一个关于mapstruct中@ManyToOne映射的问题。我有两个表 第一个: 第二个是: 我有一个这样的箱子: 和MemberDto作为实体相同。 我需要使用mapstruct进行如下映射: 我需要填写名单成员;但我不明白怎么做。
Mapstruct在Spring-Boot rest api中使用一对多和多对一关系映射我的实体时遇到了一个问题。 我有下面的课 因此,当我在评论中添加私有UserDTO用户时;进入PolicyDTO和公共列表PolicyList;进入UserDTO 结果策略列出了所有字段中的值都可以,当然,除了两个注释字段。如果我用双向关系将这两个字段取消注释到DTO中,结果不仅在关系字段中是null,而且在所
这是项目迁移 这是时间表 这样用户就可以迁移了 这是我的项目模型 这是我的时间表模型: 这是我的用户模型 现在,我从项目返回我的查询 这是可以的,但user_id用户在timesheets.user_id我不能得到它的时间表,并得到它 此控制器按时间表中的项目id返回项目和时间表,但时间表中的用户id我不知道如何将其输入系统
有没有一种方法可以忽略使用mapstruct在此代码示例中第三种方法的映射器的生成?
我编写了所需的带有注释的接口和作为装饰器的抽象类。生成(mvn清理包)后,通过“默认”过程更新修饰的函数,得到的是参数和结果类型。我不知道,有什么问题。你能帮帮我吗? 环境:mapstruct版本1.4.2。lombok最终版本1.18.22(Spring boot 2.6.3)lombok mapstruct绑定:0.2.0 和 Mapper接口声明: 装饰师: } 以及生成的源: