0

私はjpa hibernateを使用して、3つのクラスを開発しようとしています:

しかし、フェッチEAGERのタイプに関連するエラーがあります

@Entity
public class Request implements Serializable{


    /**
     * 
     */
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Integer requestId;
    private String detailRequest;

    private String place;



        @ManyToMany(mappedBy="requests",fetch=FetchType.EAGER)
    private List<Expertise> expertises;


...
//getter , setter and constructor
}

専門知識.java

@Entity
public class Expertise implements Serializable {

    /**
     * 
     */
    private static final long serialVersionUID = 1L;
     @Id
     @GeneratedValue(strategy = GenerationType.AUTO)
    private int idExpertise;
    private String seniority;
    @ManyToMany(mappedBy="expertises",fetch=FetchType.EAGER)
    private List<TechnicalSkill> technicalSkills=new ArrayList<TechnicalSkill>();


    @ManyToMany
    private List<Request> requests=new ArrayList<Request>();



....
//getter , setter and constructor
}

TechnicalSkill.java

@Entity
public class TechnicalSkill implements Serializable{

    /**
     * 
     */
    private static final long serialVersionUID = 1L;

     @Id
     @GeneratedValue(strategy = GenerationType.AUTO)
    private int idTechnicalSkill;
    private String description;
    @ManyToMany
    private List<Expertise> expertises=new ArrayList<Expertise>();

...
//getter , setter and constructor
}

しかし、jboss でこのクラスを実行すると、このエラーが表示されます

Caused by: org.hibernate.HibernateException: cannot simultaneously fetch multiple bags
4

1 に答える 1

0

これは、Expertise エンティティの Eager fetch が原因です。

  @ManyToMany(mappedBy="expertises",fetch=FetchType.EAGER)
    private List<TechnicalSkill> technicalSkills=new ArrayList<TechnicalSkill>();

Eager fetch を削除すると機能します。

于 2012-08-15T12:00:10.887 に答える