некоторые значения @PostMapping с использованием почтальона не влияют на базу данных (ноль или значение 0) - PullRequest
0 голосов
/ 12 апреля 2020

Я изучаю весеннюю загрузку, и я не очень разбираюсь в Rest и hibernate, поэтому, пожалуйста, предоставьте мне как можно больше подробностей о решении. Спасибо, что некоторые значения @PostMapping с использованием почтальона не влияют на базу данных (ноль или значение 0 ) посмотрите это изображение ниже, чтобы понять проблему

снимок экрана почтальона с нулевыми значениями в возвращаемом элементе

Элемент объекта

package tn.esprit.spring.entities;

import java.io.Serializable;
import java.util.List;

import javax.persistence.*;
import javax.validation.constraints.NotNull;

import org.springframework.web.multipart.MultipartFile;

import com.fasterxml.jackson.annotation.JsonIgnore;

@Entity
public class Item implements Serializable {

    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private long ItemId;
    @ManyToOne
    @JoinColumn(name = "owner_id")
    private User user;
    private String ItemName;
    // @Column(columnDefinition="text")
    private String Description;
    private double Price;
    private int AvailableQuantity;
    private double shippingWeight;
    // @Transient
    // private MultipartFile Picture;
    @Enumerated(value = EnumType.STRING)
    private Category category;
    @OneToMany(mappedBy = "item")
    @JsonIgnore
    private List<CartItem> CartItemList;

    public Item() {
        super();
    }

    public Item(String itemName, String description, double price, int availableQuantity, double shippingWeight,
            Category category) {
        this.ItemName = itemName;
        this.Description = description;
        this.Price = price;
        this.AvailableQuantity = availableQuantity;
        this.shippingWeight = shippingWeight;
        this.category = category;
    }

    public long getItemId() {
        return ItemId;
    }

    public void setItemId(long itemId) {
        ItemId = itemId;
    }

    public String getItemName() {
        return ItemName;
    }

    public void setItemName(String itemName) {
        ItemName = itemName;
    }

    public String getDescription() {
        return Description;
    }

    public void setDescription(String description) {
        Description = description;
    }

    public double getPrice() {
        return Price;
    }

    public void setPrice(double price) {
        Price = price;
    }

    public int getAvailableQuantity() {
        return AvailableQuantity;
    }

    public void setAvailableQuantity(int availableQuantity) {
        AvailableQuantity = availableQuantity;
    }

    public double getShippingWeight() {
        return shippingWeight;
    }

    public void setShippingWeight(double shippingWeight) {
        this.shippingWeight = shippingWeight;
    }



    public Category getCategory() {
        return category;
    }

    public void setCategory(Category category) {
        this.category = category;
    }

    public List<CartItem> getCartItemList() {
        return CartItemList;
    }

    public void setCartItemList(List<CartItem> cartItemList) {
        CartItemList = cartItemList;
    }

    public static long getSerialversionuid() {
        return serialVersionUID;
    }

    public User getUser() {
        return user;
    }

    public void setUser(User user) {
        this.user = user;
    }

}

хранилище элементов

package tn.esprit.spring.repository;

import org.springframework.data.repository.CrudRepository;

import tn.esprit.spring.entities.Item;

public interface ItemRepository  extends CrudRepository<Item, Long>  {

}

элемент службы

package tn.esprit.spring.services;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import tn.esprit.spring.entities.Item;
import tn.esprit.spring.repository.ItemRepository;

@Service
public class ItemService implements ItemServiceInterface{
    @Autowired
    ItemRepository itemrepository;
    public Item addNewItem(Item item){
        Item i=itemrepository.save(item);
        return i;
    }
}

контроллер элементов

package tn.esprit.spring.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;

import tn.esprit.spring.entities.Item;
import tn.esprit.spring.services.ItemServiceInterface;


@RestController
public class ItemControl {
    @Autowired
    ItemServiceInterface itemservice;
    @PostMapping("/additem")
    @ResponseBody
    public Item addnewitem(@RequestBody Item item){
        return itemservice.addNewItem(item);
    }
}

Ответы [ 2 ]

0 голосов
/ 13 апреля 2020

Я наконец-то выяснил источник имен переменных, которые я должен использовать. например, из получателей в объекте item: getItemName => itemName getAvailableQuantity => availableQuantity

0 голосов
/ 12 апреля 2020

при отправке запроса от почтальона вам нужно назвать сущность тела запроса идентичной вашему запросу dto, используемому в вашем контроллере. Например, для вашего случая измените имя в полезной нагрузке вашего почтальона: Item_name на ItemName, available_quantity на availableQuantity и shipping_weight на shippingWeight, как определено в вашем классе.
Надеюсь, что так и будет работа

...