我试图在用户和项目之间 Build 一个OneToMany关系,但我收到以下错误:
org.hibernate.AnnotationException: mappedBy reference an unknown target entity property: ProjectDTO.FKUser in UserDTO.projectDTOs
我的用户类如下所示
@Entity
@Table(name = "USER")
public class UserDTO implements java.io.Serializable {
private Integer iduser;
private Set<ProjectDTO> projects = new HashSet<ProjectDTO>(0);;
public UserDTO() {
}
@Id
@GeneratedValue(strategy = IDENTITY)
@Column(name = "IDUser", unique = true, nullable = false)
public Integer getIduser() {
return this.iduser;
}
@OneToMany(fetch = FetchType.LAZY, mappedBy = "FKUser")
public Set<ProjectDTO> getProjectDTOs() {
return projects;
}
}
我的Project类看起来像
@Entity
@Table(name = "Project")
public class ProjectDTO implements java.io.Serializable {
private Integer idproject;
private UserDTO FKUser;
public ProjectDTO() {
}
@Id
@GeneratedValue(strategy = IDENTITY)
@Column(name = "IDProject", unique = true, nullable = false)
public Integer getIdproject() {
return this.idproject;
}
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "FKUser", referencedColumnName = "IDUser")
public UserDTO getUserDTO() {
return FKUser;
}
}
我经历了一些类似的问题,但我无法弄清楚我哪里出错了 . 也许我错过了一些非常明显的东西 .
非常感谢
2 回答
在
mappedBy
中,您必须使用字段名称(或没有get
的getter名称的一部分用于基于属性的访问),而不是列名称 .注意:还需要添加setter .
mappedBy需要指向执行映射的实体,所以我认为它应该是mappedBy =“USER”