【发布时间】:2020-01-28 22:29:58
【问题描述】:
我想创建一个具有多个“标签”作为集合的“产品”类。所以一个一对多的数据库,而 Product 是“一”,而标签是“多”。
标签将在 HTML 中定义为输入字段并以空格分隔。例如“tag1 tag2 tag3”。
我现在的问题是:如何从输入字段中检索字符串并将它们作为集合附加到我的产品对象中?
到目前为止我所拥有的:
产品
@Entity
public class Product {
@Id
@GeneratedValue
private int barcode;
public String name;
@OneToMany(mappedBy = "product", cascade = CascadeType.ALL)
private Collection<Tag> tags;
...Getter & Setter
标签
@Entity
public class Tag {
@Id
private String tagname;
@ManyToOne(fetch = FetchType.LAZY, optional = false)
@JoinColumn(name = "barcode", nullable = false)
private Product product;
...Getter & Setter
ProductsController:我尝试添加 Tag 对象作为测试,但会引发 Tag 表不存在的错误
@PostMapping("/add")
public String add(@Valid Product product, BindingResult result, Model model) {
model.addAttribute("responseMessage", result);
if(!result.hasErrors()) {
//I tried to add a static collection to the product object, but it throws errors
Collection<Tag> col = new ArrayList<>();
col.add(new Tag("test"));
col.add(new Tag("test2"));
product.setTags(col);
productRepository.save(product);
}
model.addAttribute("products",productRepository.findAll());
return "products-add";
}
【问题讨论】:
-
我认为在您的产品类别中。私有 List
标签;它失踪了 -
我忘记复制了,它就在@Onetomany 注释 public Collection
标签的下方;
标签: java spring hibernate spring-boot thymeleaf