Как сделать уникальную переменную в веб-сервисе REST на Java? - PullRequest
0 голосов
/ 12 мая 2018

Я пытаюсь сделать простой веб-сервис REST с помощью Spring Boot в IntelliJ.Я также должен сделать клиент CRUD для этого, но позже.

Я должен создать таблицу продуктов с полями: id, имя, цена и статус.И у меня проблема с созданием уникального поля «имя».Если я отправляю данные почтальоном с тем же именем, он не должен добавлять их в базу данных и выдает ошибку сервера.

Также я должен сделать так, чтобы в поле «статус» могло быть только 3 уникальных значения.: «доступно», «нет в наличии» и «снято с продажи».Нельзя добавить новый товар со статусом «снят с продажи».Таким образом, вы можете использовать только эти три значения для публикации данных «status».

Может ли кто-нибудь помочь мне с этим?

Класс My Products:

@Entity
public class Products {
    private Long id;
    private String nazwa;
    private Float cena;
    private String status;

    @Id
    @GeneratedValue
    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getNazwa() {
        return nazwa;
    }

    public void setNazwa(String nazwa) {
        this.nazwa = nazwa;
    }

    public Float getCena() {
        return cena;
    }

    public void setCena(Float cena) {
        this.cena = cena;
    }

    public String getStatus() {
        return status;
    }

    public void setStatus(String status) {
        this.status = status;
    }
}

My ProductsController

@RestController
@RequestMapping("/products")
public class ProductsController {
@Autowired
private ProductJpaRepository productJpaRepository;

    @GetMapping(value = "/all")
    public List<Products> findAll() {
        return productJpaRepository.findAll();
    }

    @GetMapping(value = "/{nazwa}")
    public Products findByName(@PathVariable final String nazwa) {
        return productJpaRepository.findByNazwa(nazwa);
    }

    @PostMapping(value = "/load")
    public Products load(@RequestBody final Products products) {
        return productJpaRepository.save(products);
    }
}

1 Ответ

0 голосов
/ 14 мая 2018

Я должен сделать так, чтобы в поле «статус» могло быть только 3 уникальных значения: «доступно», «нет в наличии» и «снято с продажи».

Вы определяетеenum

public enum Status {
    AVAILABLE, OUT_OF_STOCK, WITHDRAWN
}

и используйте его в Product вместо String.

public class Product {
    private Long id;
    private String nazwa;
    private Float cena;

    private Status status;
    // ...
}

Вы должны добавить некоторую логику, чтобы получить это в своем хранилище,см., например, Отображение перечислимых типов JPA .

...