如何在Java中的RESTWeb服务中创建唯一变量?

如何在Java中的RESTWeb服务中创建唯一变量?,java,rest,crud,Java,Rest,Crud,我正试图通过IntelliJ中的Spring Boot实现简单的REST Web服务。我还必须为此制作CRUD客户机,但以后再做 我必须制作一个包含以下字段的产品表:id、名称、价格和状态。我在创建唯一的“名称”字段时遇到了问题。如果我用相同的名字通过邮递员发送数据,它不应该将其添加到数据库中,并且应该给我一个服务器错误 此外,我必须使“状态”字段只能有3个唯一的值:“可用”、“缺货”和“退出销售”。您不能添加状态为“已退出销售”的新产品。因此,您只能使用这三个值来发布“状态”数据 有人能帮我吗

我正试图通过IntelliJ中的Spring Boot实现简单的REST Web服务。我还必须为此制作CRUD客户机,但以后再做

我必须制作一个包含以下字段的产品表:id、名称、价格和状态。我在创建唯一的“名称”字段时遇到了问题。如果我用相同的名字通过邮递员发送数据,它不应该将其添加到数据库中,并且应该给我一个服务器错误

此外,我必须使“状态”字段只能有3个唯一的值:“可用”、“缺货”和“退出销售”。您不能添加状态为“已退出销售”的新产品。因此,您只能使用这三个值来发布“状态”数据

有人能帮我吗

我的产品类别:

@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;
    }
}
我的产品控制器

@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);
    }
}
@RestController
@请求映射(“/products”)
公共类产品控制器{
@自动连线
私人产品私人产品私人产品;
@GetMapping(value=“/all”)
公共列表findAll(){
return productJpaRepository.findAll();
}
@GetMapping(value=“/{nazwa}”)
公共产品findByName(@PathVariable最终字符串nazwa){
返回产品jparepository.findByNazwa(纳兹瓦);
}
@后映射(value=“/load”)
公共产品负载(@RequestBody final Products){
退货产品保存(产品);
}
}
我必须使“状态”字段只能有3个唯一的值:“可用”、“缺货”和“退出销售”

您可以定义一个
enum

public enum Status {
    AVAILABLE, OUT_OF_STOCK, WITHDRAWN
}
并在
产品中使用它,而不是在
字符串中使用它

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

    private Status status;
    // ...
}

您确实需要添加一些逻辑才能将其放入存储库中,请参见例如。

定义一个枚举并使成员属于该类型。