Некоторая базовая информация - у меня есть класс idname, который выглядит так: < /p>
Код: Выделить всё
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class IdName implements Serializable {
@NonNull private Long id;
@NonNull private String name;
}
< /code>
Теперь у меня есть много DTO, у которого будет представление Idname определенного поля - f.ex. < /p>
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class Book implements Serializable {
private String title;
private IdName author;
}
< /code>
или: < /p>
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class Movie implements Serializable {
private String title;
private IdName director;
}
< /code>
То, что я сейчас ищу, - это способ сказать модели Mapper:
Каждый раз, когда вы хотите сопоставить любое idname с long /string - используйте идентификатор или имя соответственно (соответственно ( и наоборот).
, что позволило бы мне сохранить свое автоматическое отображение с использованием ModelMapper для конвертации между запросом DTO (только принятие F.Ex.ex.), Dao Entity (все еще полагаясь только на ID) и ответ DTO (возвращение И идентификатор, и имя).
Обычно я мог бы представить тип -карту от idname до long/string и наоборот. Проблема здесь заключается в том, что ModelMapper по -прежнему требует, чтобы атрибуты были названы таким же образом, в то время как в моем случае будет разница - один был бы F.Ex. Authorid Так что я ищу хороший способ настроить ModelMapper, чтобы всегда пытаться картировать атрибуты IdName к их соответствующему имени атрибута + id и имя атрибута + name .
На основе приведенного выше примера DTO, давайте предположим, что у меня также есть объекты DAO, такие как следующее: < /p>
Код: Выделить всё
@Entity
@Table(name = "movies")
@Getter
@Setter
public class MovieEntity {
private String title;
private Long directorId;
}
< /code>
и < /p>
@Entity
@Table(name = "books")
@Getter
@Setter
public class BookEntity {
private String title;
private Long authorId;
}
Код: Выделить всё
MovieDtoКод: Выделить всё
MovieEntity- Если это объект idname , получите имя атрибута и попробуйте отобразить Идентификатор для атрибута имени + id (в примере книг - Автор типа idname попытается отобразить идентификатор (long) к авторидению и name (string) к Authorname на целевом объекте.
Я бы предпочел не определять Это для каждого типа класса отдельно, скорее, есть способ сказать F.Ex. Код> поле
Подробнее здесь: https://stackoverflow.com/questions/794 ... bute-names