Ошибка EntityManagerFactory в Websphere - PullRequest
1 голос
/ 04 февраля 2010

У меня очень странная проблема. У меня есть приложение, использующее Hibernate и spring. У меня определен объектный менеджер, который использует поиск JNDI. Он выглядит примерно так

<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. Но когда мы переходим на более высокий уровень 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 не может быть неправильным, так как он изначально развертывается и работает нормально, но выдает эту ошибку после перезапуска.

Это странно и не очень логично. Но если кто-то сталкивался с этим или имеет какое-либо представление о том, что может быть причиной этого, пожалуйста! помощь

В файле persistence.xml для единицы сохранения очень мало

<?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>

1 Ответ

0 голосов
/ 04 февраля 2010

Имеет ли MarketingBrands свойство Object? Если да, попробуйте изменить его на Serializable (и если это невозможно, потому что поле, если оно есть, потому что код был инструментирован PeformaSure, то у меня нет другого решения, кроме как «открыть тикет» с помощью Quest) .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...