2010-02-04 54 views
1

我有一個很奇怪的問題。 在使用Hibernate和spring.I應用程序有一個使用JNDI查找。它看起來像這樣Websphere上的EntityManagerFactory錯誤

<bean id="entityManagerFactory" 
    class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"> 
    <property name="dataSource" ref="dataSource" /> 
    <property name="persistenceUnitName" value="ConfigAPPPersist" /> 
    <property name="jpaVendorAdapter"> 
     <bean 
      class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"> 
      <property name="showSql" value="true" /> 
      <property name="generateDdl" value="false" /> 
      <property name="databasePlatform" 
       value="org.hibernate.dialect.Oracle9Dialect" /> 

     </bean> 
    </property> 

</bean> 

<bean id="dataSource" 
    class="org.springframework.jdbc.datasource.WebSphereDataSourceAdapter"> 
    <property name="targetDataSource"> 
     <bean 
      class="org.springframework.jndi.JndiObjectFactoryBean"> 
      <property name="jndiName" value="jdbc/pmp" /> 
     </bean> 
    </property> 
</bean> 

此應用程序運行正常在DEV定義的entitymanger。 但是,當我們向更高ENVS是部署這個應用程序做它成功開始,但應用程序的一些重新啓動後EntityManager的開始給這個問題

 
Caused by: javax.persistence.PersistenceException: [PersistenceUnit: ConfigAPPPersist] Unable to build EntityManagerFactory 
    at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:677) 
    at org.hibernate.ejb.HibernatePersistence.createContainerEntityManagerFactory(HibernatePersistence.java:132) 
    at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:224) 
    at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:291) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1368) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1334) 
    ... 32 more 
    Caused by: org.hibernate.MappingException: **property mapping has wrong number of columns**: com.***.***.jpa.marketing.entity.MarketBrands.$performasure_j2eeInfo type: object 

現在你會說這是很明顯的實體MarketBrands團隊是不正確的。但它不是它映射到桌上就好了。並且相同的代碼在DEV上工作。

此外,jndi不能是不正確的,因爲它部署和工作正常,但在重新啓動後拋出uo這個錯誤。

這很奇怪,不太合乎邏輯。 但是如果有人遇到這個問題或者對可能造成這種情況的任何想法請!幫助

persistence.xml中的persitence單元已經很少

<?xml version="1.0" encoding="UTF-8"?> 
<persistence xmlns="http://java.sun.com/xml/ns/persistence" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/persistence 
    http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd" version="1.0"> 

    <persistence-unit name="ConfigAPPPersist"> 
    <!-- commented code 
     --> 
    </persistence-unit> 

</persistence> 

回答

0

是否MarketingBrandsObject財產?如果是,請嘗試將其更改爲Serializable(如果由於該代碼已由PeformaSure檢測到該字段,因此該字段不可行,則我沒有任何其他解決方案而不是使用Quest「打開票證」)。

+0

MarketingBrands是一個實體,它實現了可序列化,並且映射到DB中的一個表。我知道這是沒有意義的。我想我必須要求他們關閉performasure並嘗試。 – arnabmitra 2010-02-04 17:27:01

+1

@neverland我並不是說'MarketingBrands'沒有實現'Serializable',我只是建議將'Object'類型的'$ performasure_j2eeInfo'屬性改爲'Serializable'。但是這很可能是PerformaSure添加的一個屬性,現在您已經確認他們正在使用它,所以我認爲它不可能。但PerformaSure在這裏是一個嫌疑犯,這個屬性應該是'@ Transcient'。 – 2010-02-04 17:56:50

+0

Performasure是罪魁禍首..把它解決問題..謝謝! – arnabmitra 2010-02-12 19:23:46

相關問題