【问题标题】:How to make a unique variable in REST web service in Java?如何在 Java 的 REST Web 服务中创建唯一变量?
【发布时间】:2018-10-22 17:13:50
【问题描述】:

我正在尝试通过 IntelliJ 中的 Spring Boot 制作简单的 REST Web 服务。我还必须为此创建 CRUD 客户端,但稍后再说。

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

我还必须让“状态”字段只能有 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);
    }
}

【问题讨论】:

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

标签: java rest crud


【解决方案1】:

我必须让“状态”字段只能有 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 enumerated types mapping

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-07
    • 2018-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多