休眠:mappedBy 在 oneToMany 关系中引用未知目标实体 属性
hibernate: mappedBy reference an unknown target entity property in oneToMany relationship
我的代码结构如下:
一个用户有一个最喜欢的电视节目列表,一个电视节目有一个季节列表,一个季节有一个剧集列表。
用户
@Entity
@Table(name = "users")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "user_id", updatable = false, nullable = false)
private int id;
@OneToMany(mappedBy = "tvshows", fetch = FetchType.EAGER)
private List<TvShow> favourites;
/// everything else removed for clarity
}
电视剧
@Entity
@Table(name = "tvshows")
public class TvShow {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "tvShow_id", updatable = false, nullable = false)
private int id;
@OneToMany(mappedBy = "tvshows", fetch = FetchType.EAGER)
private List<Season> seasons;
/// everything else removed for clarity
}
赛季
@Entity
@Table(name = "seasons")
public class Season{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "season_id", updatable = false, nullable = false)
private int id;
@OneToMany(mappedBy = "seasons", fetch = FetchType.EAGER)
private List<Episode> episodes;
/// everything else removed for clarity
}
应用程序无法启动并出现以下错误消息:
mappedBy reference an unknown target entity property: com.gcimpoies.project.model.Season.seasons in com.gcimpoies.project.model.TvShow.seasons
此外,
Invocation of init method failed; nested exception is org.hibernate.AnnotationException: mappedBy reference an unknown target entity property: com.gcimpoies.project.model.Season.seasons in com.gcimpoies.project.model.TvShow.seasons
我很确定我只是缺少正确的属性名称(mappedBy 的参数),但我不知道我做错了什么。
提前致谢!
您必须在 mappedBy
中输入的名称是您正在引用的 class 的 ID。
而不是:
@OneToMany(mappedBy = "tvshows", fetch = FetchType.EAGER)
尝试:
@OneToMany(mappedBy = "id", fetch = FetchType.EAGER)
您也必须对其余映射执行此操作。
我的代码结构如下:
一个用户有一个最喜欢的电视节目列表,一个电视节目有一个季节列表,一个季节有一个剧集列表。
用户
@Entity
@Table(name = "users")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "user_id", updatable = false, nullable = false)
private int id;
@OneToMany(mappedBy = "tvshows", fetch = FetchType.EAGER)
private List<TvShow> favourites;
/// everything else removed for clarity
}
电视剧
@Entity
@Table(name = "tvshows")
public class TvShow {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "tvShow_id", updatable = false, nullable = false)
private int id;
@OneToMany(mappedBy = "tvshows", fetch = FetchType.EAGER)
private List<Season> seasons;
/// everything else removed for clarity
}
赛季
@Entity
@Table(name = "seasons")
public class Season{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "season_id", updatable = false, nullable = false)
private int id;
@OneToMany(mappedBy = "seasons", fetch = FetchType.EAGER)
private List<Episode> episodes;
/// everything else removed for clarity
}
应用程序无法启动并出现以下错误消息:
mappedBy reference an unknown target entity property: com.gcimpoies.project.model.Season.seasons in com.gcimpoies.project.model.TvShow.seasons
此外,
Invocation of init method failed; nested exception is org.hibernate.AnnotationException: mappedBy reference an unknown target entity property: com.gcimpoies.project.model.Season.seasons in com.gcimpoies.project.model.TvShow.seasons
我很确定我只是缺少正确的属性名称(mappedBy 的参数),但我不知道我做错了什么。
提前致谢!
您必须在 mappedBy
中输入的名称是您正在引用的 class 的 ID。
而不是:
@OneToMany(mappedBy = "tvshows", fetch = FetchType.EAGER)
尝试:
@OneToMany(mappedBy = "id", fetch = FetchType.EAGER)
您也必须对其余映射执行此操作。