【问题标题】:Error in composite key in Hibernate org.hibernate.MappingException: Could not determine type for: java.util.Set,Hibernate org.hibernate.MappingException 中的复合键错误:无法确定类型:java.util.Set,
【发布时间】:2017-07-06 11:34:10
【问题描述】:

朋友们,我在 Hibernate 复合键中遇到了问题。 错误:org.hibernate.MappingException:无法确定类型:java.util.Set,表:IDP_UserManagerMapping,列:[org.hibernate.mapping.Column(idps)]。我有尝试了@transient 和其他东西,但没有效果请帮助。

public class IDPUserManagerMapping implements Serializable {
    private Long id;
    private Users user;
    private Users manager;
    private Users assessor;

    @OneToMany(fetch = FetchType.LAZY)
    @JoinColumns({
        @JoinColumn(name="user_id" ,referencedColumnName = "user_id"),
        @JoinColumn(name="manager_id" ,referencedColumnName = "manager_id")
        ,@JoinColumn(name="assessor_id" ,referencedColumnName = "assessor_id")
    })
    @Cascade(CascadeType.ALL)
    private Set<IDPMaster> idps = null;

    @Id
    @SequenceGenerator(sequenceName="idp_usermanagermapping_id_seq",name="idp_usermanagermapping_id_seq_gen")
    @GeneratedValue(generator="idp_usermanagermapping_id_seq_gen")
    @Column(name="id",nullable=false,unique=true,updatable=false)
    public Long getId() {
        return id;
    }
    public void setId(Long id) {
        this.id = id;
    }

    public Set<IDPMaster> getIdps() {
        return idps;
    }
    public void setIdps(Set<IDPMaster> idps) {
        this.idps = idps;
    }
        @ManyToOne(fetch=FetchType.LAZY)
    @JoinColumn(name="user_id",nullable=false)
    public Users getUser() {
        return user;
    }
    public void setUser(Users user) {
        this.user = user;
    }

    @ManyToOne(fetch=FetchType.LAZY)
    @JoinColumn(name="manager_id",nullable=false)
    public Users getManager() {
        return manager;
    }
    public void setManager(Users manager) {
        this.manager = manager;
    }

    @ManyToOne(fetch=FetchType.LAZY)
    @JoinColumn(name="assessor_id")
    public Users getAssessor() {
        return assessor;
    }
    public void setAssessor(Users assessor) {
        this.assessor = assessor;
    }
    }

第二个实体

public class IDPMaster implements Serializable {
    private Long id;
    private Users managerUser;
    private Users assessorUser;
    private Users idpUsers;
    @Id
    @SequenceGenerator(name="idp_master_id_seq_gen",sequenceName="idp_master_id_seq")
    @GeneratedValue(generator="idp_master_id_seq_gen")
    @Column(name="id",nullable=false,unique=true)
    public Long getId() {
        return id;
    }
    public void setId(Long id) {
        this.id = id;
    }
    @ManyToOne(fetch=FetchType.LAZY)
    @JoinColumn(name="user_id",nullable=false)
    public Users getIdpUsers() {
        return idpUsers;
    }
    public void setIdpUsers(Users idpUsers) {
        this.idpUsers = idpUsers;
    }
    @OneToOne(fetch=FetchType.LAZY)
    @JoinColumn(name="manager_id")
    public Users getManagerUser() {
        return managerUser;
    }
    public void setManagerUser(Users managerUser) {
        this.managerUser = managerUser;
    }

    @OneToOne(fetch=FetchType.LAZY)
    @JoinColumn(name="assessor_id")
    public Users getAssessorUser() {
        return assessorUser;
    }
    public void setAssessorUser(Users assessorUser) {
        this.assessorUser = assessorUser;
    }
    }

【问题讨论】:

    标签: java hibernate composite-key


    【解决方案1】:

    你应该移动注释

    @OneToMany(fetch = FetchType.LAZY)
        @JoinColumns({
            @JoinColumn(name="user_id" ,referencedColumnName = "user_id"),
            @JoinColumn(name="manager_id" ,referencedColumnName = "manager_id")
            ,@JoinColumn(name="assessor_id" ,referencedColumnName = "assessor_id")
        })
        @Cascade(CascadeType.ALL)
    

    private Set&lt;IDPMaster&gt; idps = null;public Set&lt;IDPMaster&gt; getIdps() getter

    Hibernate 按 ID 列分析注解,如果您在 getter 上使用注解,则应该在任何地方使用 getter 注解。

    【讨论】:

    • 但是这些是瞬态成员,所以我将其保留在该字段中。如果我这样做,那么我必须将其标记为@Transient 注释。那么它会在这里工作吗?
    猜你喜欢
    • 2011-09-04
    • 2016-09-20
    • 1970-01-01
    • 1970-01-01
    • 2013-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-04
    相关资源
    最近更新 更多