public class SurveyAnswerEntity extends BaseEntity {
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Id
private int answerId;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "question_id")
private SurveyQuestionEntity question;
private String answer;
}
和
public class SurveyContentModel {
private String question;
private List<String> answerList;
}
和
public interface SurveyAnswerMapper {
SurveyAnswerMapper MAPPER = Mappers.getMapper(SurveyAnswerMapper.class);
@Mapping(target = "question.questionId", source = "questionId")
SurveyAnswerEntity toEntity(String answer, Integer questionId);
List<SurveyAnswerEntity> toEntityList(List<String> answer, Integer questionId);
}
我有一个列表数组和一个数字。(基于数据库的密钥)
列表中的数据是不同的。但是,它依赖于与DB引用键对应的一个数字。
列表包含oneString、twoString、threeString
数字是独立存在的。
也就是说,把这两者结合起来
你需要创建一个列表。
键:1值: oneString = Entity1
键:1值: twoString = Entity2
键:1值: threeString = Entity3
是这样的。
错误:返回类型列表是一个抽象类或接口。提供非抽象/非接口结果类型或工厂方法。
当我删除questionId时,它工作得很好。也许单个字段不能简单地映射到列表。
如何为所有列表数据创建具有相同整数数据的实体?
发布于 2022-08-19 08:18:41
目前,在MapStruct中没有自动的方法来支持您正在寻找的内容。为了实现这一点,您需要编写一个自定义映射。
不过,您可以做的是使用@Context
来帮助自己。
例如:
public interface SurveyAnswerMapper {
SurveyAnswerMapper MAPPER = Mappers.getMapper(SurveyAnswerMapper.class);
@Mapping(target = "question.questionId", expression = "java(questionId)")
@Mapping(target = "answer", source = "answer")
SurveyAnswerEntity toEntity(String answer, @Context Integer questionId);
List<SurveyAnswerEntity> toEntityList(List<String> answer, @Context Integer questionId);
}
https://stackoverflow.com/questions/73368911
复制相似问题