首页 > 解决方案 > 多对多 Spring MVC mappedBy 引用了一个未知的目标实体属性

问题描述

大家好,我正在尝试为实体 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

标签: javaspring

解决方案


错误消息是明确的,这是不正确的

 @ManyToMany(mappedBy = "shelter")
 private Set<Owner> sheltersOwner;

应该

 @ManyToMany(mappedBy = "shelterOwner")
 private Set<Owner> sheltersOwner;

mappedBy引用另一侧属性名称,并且在您的代码中未正确设置。


推荐阅读