我正在研究 Spring-boot+ ReactJs 应用程序。基本上我有 2 个实体(品牌和家庭),它们具有一对多的关系。@Entity@Table(name = "brands")public class Brand extends UserDateAudit { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @NotBlank @Size(max = 140) private String name; @Lob @JsonProperty("image") private byte[] image; @OneToMany private Set<Family> family;和@Entity@Table(name = "family")public class Family extends UserDateAudit { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @NotBlank @Size(max = 140) private String name; @JsonIgnoreProperties({"hibernateLazyInitializer", "handler"}) @ManyToOne(fetch = FetchType.LAZY,cascade=CascadeType.ALL, optional = false) @JoinColumn(name = "brand_id") private Brand brand;当我创建“家庭”对象时,它会引发以下错误。org.hibernate.PersistentObjectException: detached entity passed to persist: com.example.polls.model.Brand at org.hibernate.event.internal.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:124) ~[hibernate-core-5.2.17.Final.jar:5.2.17.Final] at org.hibernate.internal.SessionImpl.firePersist(SessionImpl.java:807) ~[hibernate-core-5.2.17.Final.jar:5.2.17.Final] at org.hibernate.internal.SessionImpl.persist(SessionImpl.java:774) ~[hibernate-core-5.2.17.Final.jar:5.2.17.Final]createFamily() 如下。public Family createFamily(@Valid FamilyRequest familyRequest) { Family family = new Family(); family.setName(familyRequest.getName()); family.setBrand(familyRequest.getBrand()); return familyRepository.save(family); }我不确定我为brand_id 设置的值是否正确。请帮我解决这个问题。
1 回答
森栏
TA贡献1810条经验 获得超5个赞
您的映射不正确。双向OneToMany 的一侧必须使用mappedBy 属性。
在 ManyToOne 上级联所有操作是没有意义的:当你创建一个家庭时,你不想创建它的品牌:它已经存在。当您删除一个系列时,您不想删除它的品牌,因为它被许多其他系列引用。
添加回答
举报
0/150
提交
取消