2017-07-06 9 views
2

フレンド私はHibernateコンポジット・キーの問題に固執しました。 エラー:org.hibernate.MappingException:型の判別ができませんでした:java.util.Set、テーブル:IDP_UserManagerMapping、列:[org.hibernate.mapping.Column(idps)]。試してみました@transient他のものは有効ではありませんが助けてください。Hibernateのコンポジット・キーにエラーがあります。org.hibernate.MappingException:型を判別できませんでした:java.util.Set、

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; 
    } 
    } 

答えて

2

あなたはpublic Set<IDPMaster> getIdps()ゲッター

HibernateはID列で注釈を解析して、あなたがゲッターに注釈を使用する場合にprivate Set<IDPMaster> idps = null;から注釈

@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) 

を移動する必要がありますgetter annotatを使うべきですイオンはどこにでもあります。

+0

しかし、これらは一時的なメンバーなので、私はフィールドに保管しました。私が同じことをしたら、それを '@ Transient'アノテーションにしなければなりません。 – ThinkTank

関連する問題