以下是我的DTO:
bookdto.java:
@Data
@Document
public class BookDTO {
@Id
private UUID id;
private BookSpecificationsDTO specifications;
}
BookSpecificationsDTO接口:
public interface BookSpecificationsDTO {
BookSpecificationsTypeDTO type = null;
default BookSpecificationsTypeDTO getType() {
return type;
}
}
public enum BookSpecificationsTypeDTO{
CLASSIC,
PHANTASY
}
@Data
public class ClassicBookSpecificationDTO implements BookSpecificationsDTO {
private BookSpecificationsTypeDTO type = BookSpecificationsTypeDTO.CLASSIC;
private String genre;
private int length;
}
@Data
public class PhantasyBookSpecificationDTO implements BookSpecificationsDTO {
private BookSpecificationsTypeDTO type = BookSpecificationsTypeDTO.PHANTASY;
private String genre;
}
@Data
@Document
public class Book {
@Id
private UUID id;
private BookSpecifications specifications;
}
书目规格界面:
public interface BookSpecifications {
BookSpecificationsType type = null;
default BookSpecificationsType getType() {
return type;
}
}
BookSpecificationStype:
public enum BookSpecificationsType{
CLASSIC,
PHANTASY
}
ClassicBookSpecification:
@Data
public class ClassicBookSpecification implements BookSpecifications {
private BookSpecificationsType type = BookSpecificationsType.CLASSIC;
private String genre;
private int length;
}
@Data
public class PhantasyBookSpecification implements BookSpecifications {
private BookSpecificationsType type = BookSpecificationsType.PHANTASY;
private String genre;
}
@Mapper(componentModel = "spring", nullValuePropertyMappingStrategy = NullValuePropertyMappingStrategy.IGNORE)
public interface BookMapper {
@Mapping(target = "id", expression = "java(java.util.UUID.randomUUID())")
Book toBook(BookDTO bookDTO);
}
java: The return type BookSpecificationsDTO is an abstract class or interface. Provide a non abstract / non interface result type or a factory method.
java: Can't map property "BookSpecificationsDTO specifications" to "BookSpecifications specifications". Consider to declare/implement a mapping method: "BookSpecifications map(BookSpecificationsDTO value)".
所以,我的问题是我能以某种方式得到这份工作吗?在这种情况下,如果其中一个字段是接口,是否可以将bookdto.java映射到book.java?提前感谢!
当目标类型是接口或抽象类时,必须具备以下条件之一:
@objectFactory
注释的方法,它将创建目标对象@BeanMapping(resultType=xxx.class)
定义结果类型的映射方法在您的情况下,由于您的接口没有设置器,问题稍微复杂一些。因此,您需要对类型细化映射(或向下转换映射)的支持,这是当前的一个特性请求,还不可能开箱即用
问题内容: 我在Java中有一个基本问题,但这是OOP中的一个普遍问题。为什么界面允许设置字段?这是否与接口应该做的工作背道而驰? 按照我的理解,接口就是英语中的形容词。因此,如果我的课程实现了Runnable和Serializable接口,那么我向用户保证我的课程将满足Runnable和Seriablizable的条件。但是,这意味着接口是“无状态的”,但是允许它们在Java中具有字段… 我想念
在Java中我有一个基本的问题,但在OOP中它是一个一般的问题。为什么接口允许设置字段?这难道不是与接口应该做的相反吗? 按照我的理解,interface在英语中是一个形容词。因此,如果我的类实现了Runnable和Serializable接口,我就向用户保证我的类将满足Runnable和Serializable的条件。然而,这将意味着接口是“无状态”的,但它们被允许在Java中有字段... 我是
“”“@Data@Builder(toBuilder=true)@allargsconstuctor@noargsconstuctor public class ServiceAddress{private String addLine1;private String addLine2;private String city;private String state;private String
我想知道当使用MapStruct传递@上下文参数,或者使用干净的源到目标映射函数,以及在接口/抽象类中使用我需要的任何外部参数作为字段时,哪种做法被认为是更好的做法?谢谢
假设我有这些实体: null
嗨,到目前为止,我已经能够在简单的类之间进行映射了。现在我必须在接口之间进行映射。假设我有两个接口,其中许多类实现了这些接口。由于我没有了解如何做,我已经映射到特定类型的接口a。现在我需要做反向映射,其中属性可能在子类中,如何在这种情况下做反向映射。我尝试了@ inheritaninverseconfigurationin标签,但没有成功。< br >如果我能得到一些代码片段来理解,而不是阅读描述