多对多 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: ma​​ppedBy 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&lt;Shelter&gt; shelter; 不是private Set&lt;Shelter&gt; shelterOwner;

【讨论】:

以上是关于多对多 Spring MVC mappedBy 引用了一个未知的目标实体属性的主要内容,如果未能解决你的问题,请参考以下文章

Spring-boot JPA无限循环多对多

Spring Boot 多对多 post 方法不更新数据

推荐的方法来解决Spring Data的多对多关系的常见要求

多对多manytomany

关系/对象映射 多对多关系(@ManyToMany 注释)重新认识

Spring MVC 多对多多选