首页 文章

org.hibernate.AnnotationException:mappedBy引用未知的目标实体属性

提问于
浏览
0

我试图在用户和项目之间 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 回答

  • 0

    mappedBy 中,您必须使用字段名称(或没有 get 的getter名称的一部分用于基于属性的访问),而不是列名称 .

    //...    
        @OneToMany(fetch = FetchType.LAZY, mappedBy = "userDTO")
        public Set<ProjectDTO> getProjectDTOs() {
            return projects;
        }
        //...
    

    注意:还需要添加setter .

  • 1

    mappedBy需要指向执行映射的实体,所以我认为它应该是mappedBy =“USER”

相关问题