java - 多对多 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
解决方案
错误消息是明确的,这是不正确的
@ManyToMany(mappedBy = "shelter")
private Set<Owner> sheltersOwner;
应该
@ManyToMany(mappedBy = "shelterOwner")
private Set<Owner> sheltersOwner;
mappedBy
引用另一侧属性名称,并且在您的代码中未正确设置。
推荐阅读
- python - 过滤数据框会返回“空数据框”
- java - JNDI LDAP 池连接
- flutter - 在这里将逻辑放在图标上几乎没有帮助
- javascript - window.speechSynthesis.speak(msg) 在单击按钮之前不起作用
- c# - WPF 应用程序似乎没有收到响应
- sorting - Google表格,根据单列中的唯一值对表格进行排序
- webgl - 应用置换贴图和高光贴图
- go - InvalidClientTokenId:请求中包含的安全令牌无效
- ruby-on-rails - 如何在模块内调用路由助手?
- css - 粘性顶部不适用于 Angular8/safari