【问题标题】:EntityManagerFactory error on WebsphereWebsphere 上的 EntityManagerFactory 错误
【发布时间】:2011-01-13 04:07:20
【问题描述】:

我有一个非常奇怪的问题。 有一个使用 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 中运行良好。 但是当我们迁移到更高的环境时,部署此应用程序的团队最初会成功,但在应用程序重新启动几次后,实体管理器开始出现此问题

引起:javax.persistence.PersistenceException: [PersistenceUnit: ConfigAPPPersist] 无法构建 EntityManagerFactory 在 org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:677) 在 org.hibernate.ejb.HibernatePersistence.createContainerEntityManagerFactory(HibernatePersistence.java:132) 在 org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:224) 在 org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:291) 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1368) 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1334) ... 32 更多 引起:org.hibernate.MappingException:**属性映射的列数错误**:com.***.***.jpa.marketing.entity.MarketBrands.$performasure_j2eeInfo 类型:对象

现在你会说这很明显实体 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>

【问题讨论】:

    标签: java hibernate orm jpa websphere


    【解决方案1】:

    MarketingBrands 是否有 Object 属性?如果是,请尝试将其更改为Serializable(如果这是不可能的,因为该字段是否存在,因为代码已由 PeformaSure 检测,那么除了使用 Quest“开票”之外,我没有任何其他解决方案) .

    【讨论】:

    • MarketingBrands 是一个实体并实现了可序列化,它映射到数据库中的一个表。我知道这没有意义。我想我必须让他们关闭性能并尝试。
    • @neverland 我并不是说MarketingBrands 没有实现Serializable,我只是建议将其$performasure_j2eeInfo 类型为Object 的属性更改为Serializable。但这很可能是 PerformaSure 添加的属性,因为您已经确认他们正在使用它,所以我认为这是不可能的。但是PerformaSure在这里是个嫌疑犯,这个属性应该是@Transcient
    • 性能是罪魁祸首..关闭它解决了问题..谢谢!
    猜你喜欢
    • 1970-01-01
    • 2011-02-16
    • 2016-06-25
    • 1970-01-01
    • 1970-01-01
    • 2012-01-20
    • 1970-01-01
    • 1970-01-01
    • 2017-10-02
    相关资源
    最近更新 更多