我有如下三個實體:如何使用@OneToMany和@ManyToOne嵌套?
@Data
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(exclude = {"id", "bricksets", "themes"})
@Entity
public class Brand {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id; // Unique database primary key
@OneToMany(mappedBy = "brand", cascade = CascadeType.ALL)
private List<Brickset> bricksets;
@OneToMany(mappedBy = "brand", cascade = CascadeType.ALL)
private List<Theme> themes;
@NotNull
private String name;
}
@Data
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(exclude = {"id"})
@ToString(exclude={"brand", "theme"})
@Entity
public class Brickset {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id; // Unique database primary key
@NotNull
private String number; // set number
@ManyToOne
@JoinColumn(name = "brand_id")
private Brand brand;
@ManyToOne
@JoinColumn(name = "theme_id")
private Theme theme;
}
@Data
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(exclude = {"id"})
@ToString(exclude={"brand", "brickset"})
@Entity
public class Theme {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id; // Unique database primary key
@NotNull
private String name;
@ManyToOne
@JoinColumn(name = "brand_id")
private Brand brand;
@OneToMany(mappedBy = "Theme", cascade = CascadeType.ALL)
private List<Brickset> brickset;
}
但我遇到編譯如下錯誤,我嘗試自己解決這個問題,但我在JPA /休眠很新,你能幫助我,我怎麼能下一步呢?我認爲這個問題是我在Entity Theme中使用了ManyToOne和OneToMany,可能會被JPA/Hibernate弄糊塗,我可以理解嗎?
Caused by: org.hibernate.AnnotationException: Illegal attempt to map a non collection as a @OneToMany, @ManyToMany or @CollectionOfElements: com.zangland.entity.Theme.brickset
您指定類型而不是「mappedBy」屬性的目標名稱。它應該是'主題'而不是'主題'在最後@OneToMany – stg