Saya memiliki tabel Customers yang memiliki AddressEmbedded di dalamnya.

Saya juga memiliki tabel hardcode Countries di mana saya sudah memiliki wilayah untuk setiap negara, negara adalah kunci utama.

Saya ingin bergabung dengan AddressEmbedded dan Countries jadi saya menggunakan ManyToOne dan memasukkan CountryEntity di AddressEmbedded.

Tapi saya mendapatkan kesalahan bahwa mapstruct tidak dapat menghasilkan setCountry.

Jadi pertanyaannya, bagaimana cara membuat AddressEmbedded.setCountry(string country)? Seharusnya melakukan panggilan ke db untuk mendapatkan wilayah yang sesuai untuk negara itu, tetapi tampaknya salah menambahkan panggilan db di setter.

Berikut adalah definisi entitas:

    @AllArgsConstructor
    @NoArgsConstructor
    @ToString
    @Data
    @Embeddable
    public class AddressEmbedded {

        @ManyToOne(fetch = FetchType.LAZY)
        @JoinColumn(name = "country")
        private CountryEntity country;
    }
    @Data
    @Entity
    @Table(name = "Countries")
    public class CountryEntity {

        @Id
        @Column(name = "country")
        private String country;

        @Column(name = "region")
        private String region;
    }
    @Data
    @Entity
    @Table(name = "Customers")
    public class CustomerEntity {
        @Embedded
        private AddressEmbedded address;
    }
0
shinzou 4 Desember 2019, 19:50

1 menjawab

Jawaban Terbaik

Ini diselesaikan dengan pemetaan mapstruct

    @Mappings(
            @Mapping(target = "address.country", source = "countryEntity")
    )
    CustomerEntity fromSubmitCustomerDetailsRequestToCustomerEntity(SubmitCustomerDetailsRequest request, CountryEntity countryEntity);

    @Mappings(
            @Mapping(target = "address.country", source = "customerEntity.address.country.country")
    )
    GetCustomerDetailsResponse fromCustomerEntityToGetCustomerDetailsResponse(CustomerEntity customerEntity);

Saya memiliki CountryEntity di fromSubmitCustomerDetailsRequestToCustomerEntity karena sebelum saya menyebutnya, saya memvalidasi bahwa saya memiliki negara yang ada.

0
shinzou 5 Desember 2019, 09:12