【发布时间】:2021-05-31 08:17:24
【问题描述】:
我有两个对象,一个父母和一个孩子如下:
@Entity
@Table(name="category")
public class CategoryModel {
private @Id @GeneratedValue Long id;
private String name;
@OneToMany(mappedBy="category", cascade=CascadeType.PERSIST)
private List<AttributeModel> attributes;
}
@Entity
@Table(name="attribute")
public class AttributeModel {
private @Id @GeneratedValue Long id;
private String name;
@ManyToOne(cascade = CascadeType.ALL)
@JoinColumn(name="category_id")
private CategoryModel category;
}
我也有映射到这些模型对象的 dtos,但我忽略了它们。 当我尝试使用此有效负载保存类别对象时,属性值也在属性表中创建,但具有 null 类别 ID。
{
"name":"Chemicals",
"attributes":[
{"name": "volume"}, {"name":"humidity"}
]
}
我可以做些什么来让我的属性值使用在它们之前创建的类别 id 持久化到数据库中?
【问题讨论】:
-
请分享您在数据库中保存类别和属性的代码。
-
我没有编写任何代码来将实体保存到数据库中。我正在使用这样定义的 CrudRepository: public interface CategoryRepository extends JpaRepository
。我用这个接口的save方法。 -
你能展示你在服务中编写的代码吗?可能问题出在交易中。
标签: spring database spring-data-jpa persistence h2