2016-04-03 11 views
0

私のプロジェクトがSpring 2.5で実行され、3.2が休止状態になると、springバージョンが4.1.6に更新され、バージョンが3.6.1に更新されます。 org.springframework.orm.hibernate3.HibernateSystemException:不明なエンティティ:java.util.ArrayList

public void updateAll(Collection<EntityType> collection) { 
    try { 
    getHibernateTemplate().saveOrUpdateAll(collection); 
    } catch (Exception e) { 
     logger.error("updateAll :"+e); 
    } 
} 

の構成は次のとおりです:私のDAO機能がある

org.hibernate.MappingException: Unknown entity: java.util.ArrayList

:私は次のエラーを得た

<bean class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean" id="sessionFactory"> 
    <property name="dataSource"> 
     <ref bean="dataSource"/> 
    </property> 
    <property name="annotatedClasses"> 
     <list> 
      <value>com.cptu.egp.eps.model.table.TblCountryMaster</value> 
      </list> 
    </property> 
    <property name="hibernateProperties"> 
     <props> 
      <prop key="hibernate.dialect">org.hibernate.dialect.SQLServerDialect</prop> 
      <prop key="current_session_context_class">thread</prop> 
      <prop key="hibernate.cache.use_second_level_cache">true</prop> 
      <prop key="hibernate.connection.autocommit">true</prop> 
      <prop key="hibernate.cache.provider_class">     net.sf.ehcache.hibernate.EhCacheProvider</prop> 
      <prop key="hibernate.cache.provider_class"> net.sf.ehcache.hibernate.SingletonEhCacheProvider</prop> 
      <prop key="hibernate.max_fetch_depth">5</prop> 
      <prop key="hibernate.default_batch_fetch_size">16</prop> 
      <prop key="hibernate.jdbc.batch_size">25</prop> 
      <prop key="hibernate.jdbc.fetch_size">8</prop> 
      <prop key="hibernate.show_sql">false</prop> 
      <prop key="hibernate.connection.release_mode">after_statement</prop> 
     </props> 
    </property> 
</bean> 
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager" p:sessionFactory-ref="sessionFactory" /> 

<bean class="org.springframework.orm.hibernate3.HibernateTemplate" id="hibernateTemplate"> 
    <property name="sessionFactory"> 
     <ref bean="sessionFactory"/> 
    </property> 
</bean> 

<bean id="hibernateInterceptor" class="org.springframework.orm.hibernate3.HibernateInterceptor"> 
    <property name="sessionFactory" ref="sessionFactory" /> 
</bean> 

私のエンティティのマッピングクラス:

@Entity 
@Table(name = "tbl_TenderEstCost", schema = "dbo") 
public class TblTenderEstCost implements java.io.Serializable { 

private int estCostLotId; 
private TblTenderMaster tblTenderMaster; 

public TblTenderEstCost() { 
} 

public TblTenderEstCost(int estCostLotId, TblTenderMaster tblTenderMaster) { 
    this.estCostLotId = estCostLotId; 
    this.tblTenderMaster = tblTenderMaster; 
} 

@Id 
@GeneratedValue(generator = "TblTenderEstCostSequence", strategy = GenerationType.IDENTITY) 
@SequenceGenerator(name = "TblTenderEstCostSequence", sequenceName = "tblTenderEstCost_sequence", allocationSize = 25) 

@Column(name = "estCostLotId", unique = true, nullable = false) 
public int getEstCostLotId() { 
    return this.estCostLotId; 
} 

public void setEstCostLotId(int estCostLotId) { 
    this.estCostLotId = estCostLotId; 
} 

@ManyToOne(fetch = FetchType.LAZY) 
@JoinColumn(name = "tenderId", nullable = false) 
public TblTenderMaster getTblTenderMaster() { 
    return tblTenderMaster; 
} 

public void setTblTenderMaster(TblTenderMaster tblTenderMaster) { 
    this.tblTenderMaster = tblTenderMaster; 
} 

} `

+0

エラーの原因となるコードを入力してもよいですか? –

+0

エンティティマッピングを表示してください。 – dambros

+0

あなたはannotatedClassesを と置き換えてみることができますか? '? –

答えて

1

ソースコードによると、4.1.6でsaveOrUpdateAll()メソッドがない、そしてそれはまた、スプリング3

に廃止予定です。

http://grepcode.com/file/repo1.maven.org/maven2/org.springframework/spring-orm/4.1.6.RELEASE/org/springframework/orm/hibernate4/HibernateTemplate.java#HibernateTemplate

saveOrUpdate()にコレクションを渡しているようで、hibernateがマッピング設定を見つけることができません。

+0

次に、可能な代替手段は何ですか? –

+0

foreachとsaveOrUpdate()を使用すると思います。 –