我正在尝试在用户和项目之间建立 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;
}
}
我的项目类看起来像
@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;
}
}
我遇到了一些类似的问题,但我无法弄清楚我哪里出了问题。也许我错过了一些非常明显的东西。
非常感谢
最佳答案
在 mappedBy
中,您必须使用字段名称(或者为基于属性的访问不带 get
的 getter 名称的一部分),而不是列名称。
//...
@OneToMany(fetch = FetchType.LAZY, mappedBy = "userDTO")
public Set<ProjectDTO> getProjectDTOs() {
return projects;
}
//...
注意:还需要添加setter。
关于java - org.hibernate.AnnotationException : mappedBy reference an unknown target entity property,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39358257/