当我尝试编译我的应用程序时,它向我显示了这个错误,整个应用程序是用 Jhipster 生成的。
详细描述错误:[ERROR] /C:/Users/user/Desktop/Devs/CURTIPIELES/curti-back/src/main/java/com/curtipieles/app/service/mapper/LeatherMapper.java:[21 ,16] 无法将属性“com.curtipieles.app.domain.Usage Leather.usage.usage”映射到“java.lang.String usageName”。考虑声明/实现一个映射方法:“java.lang.String map(com.curtipieles.app.domain.Usage value)”。
这是我的 LeatherMapper:
@Mapper(componentModel = "spring", uses = {LeatherFamilyMapper.class, LeatherHasColorMapper.class, LeatherHasUsageMapper.class})
public interface LeatherMapper extends EntityMapper<LeatherDTO, Leather> {
@Mapping(source = "family.id", target = "familyId")
@Mapping(source = "family.name", target = "familyName")
@Mapping(source = "color.id", target = "colorId")
@Mapping(source = "color.id", target = "colorName")
@Mapping(source = "usage.id", target = "usageId")
@Mapping(source = "usage.usage", target = "usageName")
LeatherDTO toDto(Leather leather);
@Mapping(source = "familyId", target = "family")
@Mapping(source = "colorId", target = "color")
@Mapping(source = "usageId", target = "usage")
Leather toEntity(LeatherDTO leatherDTO);
default Leather fromId(Long id) {
if (id == null) {
return null;
}
Leather leather = new Leather();
leather.setId(id);
return leather;
}
}
这是我的 LeatherDTO(我没有把 Getter 和 Setter 放在一起,以免把问题拖长太多)
public class LeatherDTO implements Serializable {
private Long id;
private String imageUrl;
private String name;
private String description;
private Boolean status;
private Instant creationDate;
private Boolean isNew;
private Long familyId;
private String familyName;
private Long colorId;
private String colorName;
private Long usageId;
private String usageName;
这是我的皮革课:
@Entity
@Table(name = "leather")
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
public class Leather implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator =
"sequenceGenerator")
@SequenceGenerator(name = "sequenceGenerator")
private Long id;
@Column(name = "image_url")
private String imageUrl;
@Column(name = "name")
private String name;
@Column(name = "description")
private String description;
@Column(name = "status")
private Boolean status;
@Column(name = "creation_date")
private Instant creationDate;
@Column(name = "is_new")
private Boolean isNew;
@ManyToOne
@JsonIgnoreProperties(value = "leathers", allowSetters = true)
private LeatherFamily family;
@ManyToOne
@JsonIgnoreProperties(value = "leathers", allowSetters = true)
private LeatherHasColor color;
@ManyToOne
@JsonIgnoreProperties(value = "leathers", allowSetters = true)
private LeatherHasUsage usage;
这是我的 LeatherHasUsage 类:
@Entity
@Table(name = "leather_has_usage")
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
public class LeatherHasUsage implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator =
"sequenceGenerator")
@SequenceGenerator(name = "sequenceGenerator")
private Long id;
@Column(name = "status")
private Boolean status;
@ManyToOne
@JsonIgnoreProperties(value = "leatherHasUsages", allowSetters = true)
private Usage usage;
// jhipster-needle-entity-add-field - JHipster will add fields here
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public Boolean isStatus() {
return status;
}
public LeatherHasUsage status(Boolean status) {
this.status = status;
return this;
}
这是我的 LeatherHasColor 类:
@Entity
@Table(name = "leather_has_color")
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
public class LeatherHasColor implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "sequenceGenerator")
@SequenceGenerator(name = "sequenceGenerator")
private Long id;
@Column(name = "status")
private Boolean status;
@ManyToOne
@JsonIgnoreProperties(value = "leatherHasColors", allowSetters = true)
private Color color;
这是我的 LeatherFamily 课程
@Entity
@Table(name = "leather_family")
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
public class LeatherFamily implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator =
"sequenceGenerator")
@SequenceGenerator(name = "sequenceGenerator")
private Long id;
@Column(name = "image_url")
private String imageUrl;
@Column(name = "name")
private String name;
@Column(name = "description")
private String description;
@Column(name = "status")
private Boolean status;
@Column(name = "is_new")
private Boolean isNew;
@Column(name = "creation_date")
private Instant creationDate;
答案 0 :(得分:0)
这是问题的解决方案
<块引用>您将“usage.usage”更改为“usage.usage.usage”,并且可能还将“usage.id”更改为“usage.usage.id”,因为您似乎忘记了您有一个额外级别的对象,并且对颜色做类似的改变,你的代码应该都是固定的。 - comment by Andreas