Hibernate 多个表的一对多映射
Hibernate one to many mapping for multiple tables
@Entity
@Table(name="Visit")
public class Visit {
@Id
@XmlTransient
@JsonIgnore
@SequenceGenerator(name = "v_id_seq", sequenceName = "v_id_seq", allocationSize = 1)
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "v_id_seq")
@Column(name = "id")
private Long id;
@OneToMany(mappedBy = "Visit",cascade = CascadeType.PERSIST,orphanRemoval = true,fetch=FetchType.LAZY)
private List<directions> directions;
@OneToMany(mappedBy = "Visit",cascade = CascadeType.PERSIST,orphanRemoval = true,fetch=FetchType.LAZY)
private List<Test> Test;
@Entity
@Table(name="test")
public class Test {
@Id
@XmlTransient
@JsonIgnore
@SequenceGenerator(name = "t_id_seq", sequenceName = "t_id_seq", allocationSize = 1)
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "t_id_seq")
@Column(name = "id")
private Long id;
@ManyToOne(fetch = FetchType.LAZY)
@JsonBackReference
@JoinColumn(name = "vid", updatable = false, insertable = true,referencedColumnName = "id")
private Visit visit;
@Entity
@Table(name="direction")
public class directions {
@Id
@XmlTransient
@JsonIgnore
@SequenceGenerator(name = "d_id_seq", sequenceName = "d_id_seq", allocationSize = 1)
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "d_id_seq")
@Column(name = "id")
private Long id;
@ManyToOne(fetch = FetchType.LAZY)
@JsonBackReference
@JoinColumn(name = "vid", updatable = false, insertable = true,referencedColumnName = "id")
private Visit Visit;
你好,我是休眠新手
我正在尝试映射 OneToMany Visit-->Test and Visit-->direction 但出现错误
Caused by: org.hibernate.AnnotationException: mappedBy reference an unknown target entity property:
一次访问可以有多个方向和测试
我该如何实施?
请帮助我!
@OneToMany
注解中mappedBy
字段的值引用java实例变量名,区分大小写。您将其设置为 Visit
,但在 directions
和 test
类 中,变量名称为 visit
.
解决方法是将属性mappedBy
由Visit
改为visit
(小写V):
@OneToMany(mappedBy = "visit",cascade = CascadeType.PERSIST,orphanRemoval = true,fetch=FetchType.LAZY)
private List<directions> directions;
@OneToMany(mappedBy = "visit",cascade = CascadeType.PERSIST,orphanRemoval = true,fetch=FetchType.LAZY)
private List<Test> Test;
@Entity
@Table(name="Visit")
public class Visit {
@Id
@XmlTransient
@JsonIgnore
@SequenceGenerator(name = "v_id_seq", sequenceName = "v_id_seq", allocationSize = 1)
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "v_id_seq")
@Column(name = "id")
private Long id;
@OneToMany(mappedBy = "Visit",cascade = CascadeType.PERSIST,orphanRemoval = true,fetch=FetchType.LAZY)
private List<directions> directions;
@OneToMany(mappedBy = "Visit",cascade = CascadeType.PERSIST,orphanRemoval = true,fetch=FetchType.LAZY)
private List<Test> Test;
@Entity
@Table(name="test")
public class Test {
@Id
@XmlTransient
@JsonIgnore
@SequenceGenerator(name = "t_id_seq", sequenceName = "t_id_seq", allocationSize = 1)
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "t_id_seq")
@Column(name = "id")
private Long id;
@ManyToOne(fetch = FetchType.LAZY)
@JsonBackReference
@JoinColumn(name = "vid", updatable = false, insertable = true,referencedColumnName = "id")
private Visit visit;
@Entity
@Table(name="direction")
public class directions {
@Id
@XmlTransient
@JsonIgnore
@SequenceGenerator(name = "d_id_seq", sequenceName = "d_id_seq", allocationSize = 1)
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "d_id_seq")
@Column(name = "id")
private Long id;
@ManyToOne(fetch = FetchType.LAZY)
@JsonBackReference
@JoinColumn(name = "vid", updatable = false, insertable = true,referencedColumnName = "id")
private Visit Visit;
你好,我是休眠新手
我正在尝试映射 OneToMany Visit-->Test and Visit-->direction 但出现错误
Caused by: org.hibernate.AnnotationException: mappedBy reference an unknown target entity property:
一次访问可以有多个方向和测试 我该如何实施?
请帮助我!
@OneToMany
注解中mappedBy
字段的值引用java实例变量名,区分大小写。您将其设置为 Visit
,但在 directions
和 test
类 中,变量名称为 visit
.
解决方法是将属性mappedBy
由Visit
改为visit
(小写V):
@OneToMany(mappedBy = "visit",cascade = CascadeType.PERSIST,orphanRemoval = true,fetch=FetchType.LAZY)
private List<directions> directions;
@OneToMany(mappedBy = "visit",cascade = CascadeType.PERSIST,orphanRemoval = true,fetch=FetchType.LAZY)
private List<Test> Test;