多对多 Spring MVC mappedBy 引用了一个未知的目标实体属性
Posted
技术标签:
【中文标题】多对多 Spring MVC mappedBy 引用了一个未知的目标实体属性【英文标题】:Many to Many Spring MVC mappedBy reference an unknown target entity property 【发布时间】:2020-04-24 10:31:20 【问题描述】:大家好 我正在尝试为实体 Shelter 和 Owner 建立关系,多对多,但错误是攀爬,我不明白这是怎么回事
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
@DynamicUpdate
@Entity
@Table(name = "owner")
public class Owner
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int idOwner;
private String name;
private String address;
private String description;
@ManyToMany(cascade = CascadeType.ALL)
@JoinTable(
name = "owner_shelter",
joinColumns = @JoinColumn(name = "owner"),
inverseJoinColumns = @JoinColumn(name = "shelter")
)
private Set<Shelter> shelterOwner;
--
@Data
@DynamicUpdate
@AllArgsConstructor
@NoArgsConstructor
@Builder
@Entity
@Table(name = "shelter")
public class Shelter
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
private String name;
private String address;
private String description;
@ManyToMany(mappedBy = "shelter")
private Set<Owner> sheltersOwner;
还有错误
org.springframework.beans.factory.BeanCreationException:在类路径资源 [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaConfiguration.class] 中定义名称为“entityManagerFactory”的 bean 创建错误:调用 init 方法失败;嵌套异常是 org.hibernate.AnnotationException: mappedBy reference an unknown target entity property: ru.itis.springbootdemo.models.Shelter.sheltersOwner 中的 ru.itis.springbootdemo.models.Owner.shelter
【问题讨论】:
【参考方案1】:错误信息是明确的,这是不正确的
@ManyToMany(mappedBy = "shelter")
private Set<Owner> sheltersOwner;
应该是
@ManyToMany(mappedBy = "shelterOwner")
private Set<Owner> sheltersOwner;
mappedBy
引用了另一端的属性名称,但在您的代码中未正确设置。
【讨论】:
【参考方案2】:问题是Owner
类中收容所的字段名,必须是private Set<Shelter> shelter;
不是private Set<Shelter> shelterOwner;
【讨论】:
以上是关于多对多 Spring MVC mappedBy 引用了一个未知的目标实体属性的主要内容,如果未能解决你的问题,请参考以下文章
推荐的方法来解决Spring Data的多对多关系的常见要求