2017-07-05 22 views
1

です。皆さんからの迅速なヘルプが必要です。私は、パフォーマンスの最適化のためのmappedBy代わりの@JoinColumnを使用していますHibernate mappedByによりcom.sun.jdi.InvocationExceptionが発生しました。メソッドの呼び出しは

@OneToMany(cascade=CascadeType.ALL,fetch=FetchType.LAZY,mappedBy="user") 

私はfetch=FetchType.EAGERを設定することをお勧めされています。 しかし、私はそれをしたくありません。 lazily Loaded Collection Objectsを取得する他の方法はありますか? それには@JoinColumnを使用する必要がありますか? そして、mappedByは、それを遅延して読むことができない場合に、他の人にとってどれほど有用なのですか?

サンプルエンティティ

@Entity 
@Table(name="users,[email protected](columnNames= "username")) 
public class Users implements java.io.Serializable { 
    private Set<IDPMaster> idpMaster; 
    public void setIdpMaster(Set<IDPMaster> idpMaster) { 
     this.idpMaster = idpMaster; 
    } 
    @OneToMany(cascade = CascadeType.ALL,fetch=FetchType.LAZY,mappedBy="user") 
    public Set<IDPUserManagerMapping> getIdpMapping() { 
     return idpMapping; 
    } 
    //Getters and Setters 
    } 


@Entity 
@Table(name="IDP_Master",schema="eb") 
public class IDPMaster implements Serializable { 
    private Users idpUsers; 
     @ManyToOne(fetch=FetchType.LAZY) 
    @JoinColumn(name="paticipant_id",nullable=false) 
    public Users getIdpUsers() { 
     return idpUsers; 
    } 
    public void setIdpUsers(Users idpUsers) { 
     this.idpUsers = idpUsers; 
    } 
    } 

答えて

3

mappedByのみ即ち@JoinColumnの関係の側の両方に使用することができるのに対し、親エンティティのエンティティで使用することができます。違いについては、JPA JoinColumn vs mappedByを参照してください。作成したサンプルエンティティを表示できますか?

fetch = FetchType.LAZYを指定する必要はありません。デフォルトでは、fetchTypeはHibernateでは常に遅延しているためです。 JPAでは、フェッチタイプはマッピングによって異なります。 mappedByで提供

編集.. フィールド名が"idpUsers" ではなく"ユーザー"でなければなりません。子エンティティの変数名と一致する必要があります。

関連する問題