在spring-boot中加入两个实体
Posted
技术标签:
【中文标题】在spring-boot中加入两个实体【英文标题】:Joining two entities in spring-boot 【发布时间】:2022-01-22 22:56:20 【问题描述】:我有一个类别表,它有自己的唯一 ID 和名称, 我有一个产品表,它有自己的唯一 ID、名称、价格和 categoryId。
Category.java
@Entity
public class Category
@Id
@GeneratedValue
private long id;
private String name;
@OneToMany(fetch=FetchType.LAZY, mappedBy = "category")
private Set<Product> products;
//getters and setters
Product.java
@Entity
public class Product
@Id
private long productId;
private String name;
private double price;
@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(name="categoryId")
private Category category;
public Product()
public Product(long productId, String name, double price)
super();
this.productId = productId;
this.name = name;
this.price = price;
public long getProductId()
return productId;
public String getName()
return name;
public double getPrice()
return price;
当我尝试通过 post 方法创建新产品时,我应该能够读取或写入其 categoryId,但我不能。我做错了什么?
【问题讨论】:
“当我尝试通过 post 方法创建新产品时”,“应该能够读取或写入它的 categoryId”,...请显示!!...“但我不能“......请显示/解释......但我已经猜到了:谁设置了id??(什么数据已经在db中?..;) 请提供足够的代码,以便其他人更好地理解或重现问题。 【参考方案1】:您应该不能编写它的 categoryId,但您需要一个用于 Product.category
的 getter 和一个 setter。要更改产品的类别,您可以使用product.setCategory(newCategory)
。如果要读取产品的类别ID,还需要为Category.id
添加getter;然后你会这样做:product.getCategory().getId()
。
【讨论】:
以上是关于在spring-boot中加入两个实体的主要内容,如果未能解决你的问题,请参考以下文章