请考虑以下实体、Dto和映射程序类。
人格.java
package com.example.car;
import java.util.ArrayList;
import java.util.List;
public class PersonEntity {
private String name;
private List cars;
public PersonEntity() {
cars = new ArrayList<>();
}
public boolean addCar(CarEntity carEntitiy) {
return cars.add(carEntitiy);
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public List getCars() {
return cars;
}
public void setCars(List carEntities) {
this.cars = carEntities;
}
}
小心.java
package com.example.car;
public class CarEntity {
private String model;
public String getModel() {
return model;
}
public void setModel(String model) {
this.model = model;
}
}
package com.example.car;
import java.util.ArrayList;
import java.util.List;
public class PersonDto {
private String name;
private List cars;
public PersonDto() {
cars = new ArrayList<>();
}
public boolean addCar(CarDto carDto) {
return cars.add(carDto);
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public List getCars() {
return cars;
}
public void setCars(List carDtos) {
this.cars = carDtos;
}
}
CarDto.java卡
package com.example.car;
public class CarDto {
private String model;
public String getModel() {
return model;
}
public void setModel(String model) {
this.model = model;
}
}
人
package com.example.car;
import org.mapstruct.CollectionMappingStrategy;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;
@Mapper(collectionMappingStrategy = CollectionMappingStrategy.ADDER_PREFERRED)
public interface PersonMapper {
PersonMapper INSTANCE = Mappers.getMapper(PersonMapper.class);
PersonEntity personDtoToPersonEntity(PersonDto personDto);
}
this
链接我收到以下错误:
无法将属性“java.util.List cars”映射到
映射方法:“com.example.car.CarEntity
映射(java.util.List值)”。
如果我从Person类中删除“adder”方法,它就可以正常工作。但我真的想使用adder方法(用于JPA实体的父子关系)。
我不知道为什么MapStruct不将PersonEntity中的cars属性解释为List。它将该属性解释为一个简单的CarEntity,而不是CarEntity列表。