Хранение / обновление изображения вместе с данными объекта в весенней загрузке / Angular - PullRequest
0 голосов
/ 02 апреля 2020

Я новичок в весенней загрузке. У меня есть приложение весенней загрузки и интерфейс в Angular 8 и postgres DB. Я использую MapStruct для отображения между сущностью и DTO. У меня есть объект Product, и создание новой записи и обновление работает нормально. Теперь я хочу включить изображение в сущность и сохранить в БД. Я искал и обнаружил, что все говорят, что используют метод MultipartFile, но каждое решение содержит только сохранение изображения, а не данные объекта. Есть ли способ сохранить изображение вместе со свойствами объекта? Как MapStruct ведет себя вместе с изображением, поскольку изображение должно быть включено в DTO? Любые решения?

Продукт

@Entity
@Table(name = "products", indexes = {@Index(name= "part_number_index", columnList = "part_number", unique = true)})
public class Product extends UserDateAudit
{
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @NotBlank
    @Column(name = "part_number", nullable = false)
    @Size(max = 20)
    private String partNumber;

    @NotBlank
    @Size(max = 255)
    private String description;

    @OneToMany(
            mappedBy = "product",
            cascade = CascadeType.ALL,
            fetch = FetchType.EAGER,
            orphanRemoval = true
    )
    @Fetch(FetchMode.SELECT)
    private List<ReplaceNumber> replaceNumbers = new ArrayList<>();

    @ManyToOne
    @JoinColumn(name = "product_manufacturer_id", referencedColumnName = "id")
    private ProductManufacturer manufacturer;

    @ManyToOne
    @JoinColumn(name = "product_model_id", referencedColumnName = "id")
    private ProductModel model;

    @ManyToOne
    @JoinColumn(name = "product_category_id", referencedColumnName = "id")
    private ProductCategory category;

    @Column(name = "cost", nullable = false)
    @DecimalMin(message = "Cost should be greater than 1", value = "1")
    private float cost;

    @Column(name = "price", nullable = false)
    @DecimalMin(message = "Price should be greater than 0", value = "0")
    private float price;

    @Lob
    private byte[] image;
}

1 Ответ

2 голосов
/ 04 апреля 2020

Mapstruct знает концепцию отображений обновлений. Оформить заказ Документация MapStruct . Вы можете повторно использовать текущие отображения моих средств @InheritConfiguration.

Итак


@Mapper
public interface MyMapper {


// create method
@Mapping( target = "field1", source ="fieldA" )
@Mapping( target = "field2", source ="fieldB" )
Entity map( Dto in );


// update method
@InheritConfiguraton
void map( Dto in, @MappingTarget Entity out );

}
...