2011-03-31 21 views
5

sorunum çok takip ilişkilidir Ben hevesli hem ilişkilerine türünü Fetch var, ancak şu veriyor:Fetch Nasıl @ OneToMany ve @ManyToMany Varlıkları

Caused by: org.hibernate.loader.MultipleBagFetchException: cannot simultaneously fetch multiple bags 
    at org.hibernate.loader.BasicLoader.postInstantiate(BasicLoader.java:94) 
    at org.hibernate.loader.entity.EntityLoader.<init>(EntityLoader.java:119) 
    at org.hibernate.loader.entity.EntityLoader.<init>(EntityLoader.java:71) 
    at org.hibernate.loader.entity.EntityLoader.<init>(EntityLoader.java:54) 
    at org.hibernate.loader.entity.BatchingEntityLoader.createBatchingEntityLoader(BatchingEntityLoader.java:133) 
    at org.hibernate.persister.entity.AbstractEntityPersister.createEntityLoader(AbstractEntityPersister.java:1914) 
    at org.hibernate.persister.entity.AbstractEntityPersister.createEntityLoader(AbstractEntityPersister.java:1937) 
    at org.hibernate.persister.entity.AbstractEntityPersister.createLoaders(AbstractEntityPersister.java:3205) 
    at org.hibernate.persister.entity.AbstractEntityPersister.postInstantiate(AbstractEntityPersister.java:3191) 
    at org.hibernate.persister.entity.SingleTableEntityPersister.postInstantiate(SingleTableEntityPersister.java:728) 
    at org.hibernate.impl.SessionFactoryImpl.<init>(SessionFactoryImpl.java:348) 
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1845) 
    at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:902) 
    ... 33 more 

Ben iki listeyi erişmesi gereken List<ColumnFormat> columnList ve farklı fasulye List<Originator> originators, ancak her iki arasında ise yukarıdaki sorunu olsun, ve bunlardan biri Tembelise aşağıdaki alıyorum Tipistekli getir: bir yolu var mı

Caused by: org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: xxx.xxx.xxx.xxx.FileFormat.originators, no session or session was closed 
    at org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializationException(AbstractPersistentCollection.java:383) 
    at org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializationExceptionIfNotConnected(AbstractPersistentCollection.java:375) 
    at org.hibernate.collection.AbstractPersistentCollection.readElementExistence(AbstractPersistentCollection.java:157) 
    at org.hibernate.collection.PersistentBag.contains(PersistentBag.java:262) 
    at java.util.ArrayList.batchRemove(ArrayList.java:632) 
    at java.util.ArrayList.removeAll(ArrayList.java:605) 
    at xxx.xxx.xxx.xxx.bean.FileFormatEdit.init(FileFormatEdit.java:1040) 
    ... 75 more 

Bu sorunlara sahip olmadan farklı fasulyelerdeki listeleri almak için?

+0

Eğer veri almak için kullanan bazı kodlar sonrası olabilir? – Nathanphan

+0

Burada bir cevap bulunabilir: [Hazırda bekletme, birden fazla çanta getiremiyor] (http://stackoverflow.com/a/4335514/251745) – chepseskaf

cevap

4

Bu sorunla daha önce karşılaşılmadım, ancak yalnızca "birden fazla çanta aynı anda getirilemiyor" ifadesi, Hazırda bekleyen forumlarda this link değerini döndürüyor.

Bu bağlantıdaki blog posts'dan biri, aradığınız çözümü içerebilir.

+0

Verdiğiniz bağlantılar kesinlikle yardımcı oldu. Teşekkürler, hala çözüm üzerinde çalışıyorum – camiloqp

+0

Cevabınızı kabul ediyorum çünkü ortaya koyduğum asıl soruyu çözüyor, ancak yeni bir gereksinim olduğu için bunu farklı bir şekilde çözmem gerekiyordu. – camiloqp

1

fetch=FetchType.EAGER hepsini silip temizledim. Ben, 3.5.5-Final, Spring 3.0.4 ve Junit 4 için hazırda bekletiyorum. Nesnemin tüm çocukları yüklediği için getirme-EAGER varsayılan olarak olduğunu düşünüyorum.

Bu SessionFactory geçerli:

<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean" 
    p:dataSource-ref="dataSource" 
    p:packagesToScan="org.pfc.modelo"> 

    <property name="hibernateProperties"> 
     <props> 
      <prop key="dialect">org.hibernate.dialect.Oracle10gDialect</prop> 
      <prop key="show_sql">true</prop> 
      <prop key="format_sql">true</prop> 
     </props> 
    </property> 
</bean> 

Bu sınıftır:

@Entity 
@Table(name="D_ACTIVIDAD") 
public class Actividad implements Serializable { 


private static final long serialVersionUID = 1L; 

@Id 
@SequenceGenerator(sequenceName="SQ_ACTIVIDAD",name="seqActividad") 
@GeneratedValue(strategy=GenerationType.SEQUENCE,generator="seqActividad") 
private Integer idActividad; 

@Column(name="FECHA",nullable=false) 
@Temporal(TemporalType.TIMESTAMP) 
private Calendar fecha; 

@Column(name="TITULO",nullable=false) 
private String titulo; 

@Column(name="TEXTO",nullable=false) 
private String texto; 

@ManyToOne 
@JoinColumn(name="IDASOCIACION") 
private Asociacion asociacion; 

@OneToMany(mappedBy="actividad",cascade=CascadeType.ALL,orphanRemoval=true) 
private List<ComentarioActividad> comentarios; 

@OneToMany(mappedBy="actividad",cascade=CascadeType.ALL,orphanRemoval=true) 
@OrderBy(value="fecha") 
private List<Documento> documentos; 

    //set and get methods 
    ........... 
    ........... 
    ........... 

    }