• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Java model mapper jak zmapować obiekt na string bedący jednym z pól

Object Storage Arubacloud
0 głosów
216 wizyt
pytanie zadane 18 maja 2021 w Java przez kokos67 Nowicjusz (120 p.)

Hej

Mam taką encję i takie DTO:

@Entity
@Table(name = "Tracks")
public class Track {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Integer id;

    @NotBlank(message = "The track name cannot be blank")
    private String name;

    @NotNull
    @Min(value = 1, message = "Total length of the track must be greater than 0")
    private Integer lengthInSeconds;

    @NotBlank(message = "The track genre cannot be blank")
    private String genre;

    @ManyToOne
    @JoinColumn(name = "fk_id_album")
    private Album album;

    Track() {}

    // getery i setery
}

 

public class TrackDto {
    @NotBlank(message = "The track name cannot be blank")
    private String name;

    @NotNull
    @Min(value = 1, message = "Total length of the track must be greater than 0")
    private int lengthInSeconds;

    @NotBlank(message = "The track genre cannot be blank")
    private String genre;

    @NotBlank(message = "The album title cannot be blank")
    private String albumTitle;

    public TrackDto() {
    }

    // getery i setery
}

 

Album ma wiele pól, chciałbym aby moje DTO miało tylko tytuł albumu

Jak to zrobić przy takim mapowaniu Entity -> DTO:

ModelMapper modelMapper = new ModelMapper();

Track track = repository.findById(12)
    .orElseThrow(() -> new IllegalArgumentException("Track with given id not found")); //jakiś tam track

TrackDto trackDto = modelMapper.map(track, TrackDto.class);

 

Coś takiego nie zapisze mi  w ogóle albumu, nie wiem jak skonfigurować ten modelMapper aby z pola Album wyciągał string 'title' i zapisywał w 'albumTitle' z TrackDto.

komentarz 23 maja 2021 przez Wiciorny Ekspert (269,710 p.)

swoją drogą rzucanie 

IllegalArgumentException

przy nieznalezieniu encji o wskazanym identyfikatorze, ma się ni jak... bo argument jest Legal. 

1 odpowiedź

0 głosów
odpowiedź 22 maja 2021 przez Wiciorny Ekspert (269,710 p.)

Nie możesz tego zrobić, bo nie na tym polega mapowanie... 
swoją drogą albumTitle to String, a u Ciebie Album to klasa własna, powinieneś dla obiektu tract  wykonać metode która przed mapowaniem, ustawi odpowiednia wartość 
Istnieje szansa, na takie brzydkie "pamowanie" z wykorzystaniem modelMappera poprzez, dodawanie mapowania 
http://modelmapper.org/user-manual/property-mapping/

modelMapper.addMapping(Album::getAlbumTitle, String::setAlbumTitle);

i odpowiednio ustalasz tutaj mapowanie na get-set dla odpowiednich obiektów 

Podobne pytania

0 głosów
1 odpowiedź 129 wizyt
pytanie zadane 31 stycznia 2018 w Java przez newUser Użytkownik (520 p.)
0 głosów
1 odpowiedź 159 wizyt
pytanie zadane 11 maja 2017 w Java przez Kubs Mądrala (5,190 p.)
0 głosów
1 odpowiedź 76 wizyt
pytanie zadane 25 września 2020 w Java przez Szyszka Gaduła (3,490 p.)

92,565 zapytań

141,417 odpowiedzi

319,601 komentarzy

61,950 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...