【问题标题】:JBoss 7 throwing Entity is not mapped when using @PersistenceContext使用 @PersistenceContext 时未映射 JBoss 7 抛出实体
【发布时间】:2012-02-28 11:33:25
【问题描述】:

我在一个应用程序中使用 Spring/JPA/Hibernate 3,在 Tomcat 7 中运行得很好,但在 JBoss AS 7 中失败了。我正在使用 @PersistenceContext 注释来注入我的实体管理器在 DAO 中,但在运行查询时出现 "Entity is not mapped" 异常。我不希望 JBoss 管理我的持久性上下文,我正在使用类路径扫描来构造我的 LocalContainerEntityManagerFactoryBean。我尝试从 JBoss Standalone.xml 中禁用 jpa 模块,甚至添加一个包含以下内容的 jboss-deployment-structure.xml:

<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.0">
    <deployment>
        <exclusions>
            <module name="org.hibernate"/>
        </exclusions>
    </deployment>
</jboss-deployment-structure>

还是不行。这个异常的原因是什么?为什么 JBoss 仍然尝试管理我的持久化上下文?

P.S.:默认情况下,我得到一个奇怪的 PU 定义(PU 根 url 不是我的战争!)

(MSC service thread 1-3) insurance-module 17:51:41.456 [MSC service thread 1-3] DEBUG org.hibernate.ejb.Ejb3Configuration - Processing PersistenceUnitInfo [
17:51:41,456 INFO  [stdout] (MSC service thread 1-3)    name: default
17:51:41,456 INFO  [stdout] (MSC service thread 1-3)    persistence provider classname: null
17:51:41,456 INFO  [stdout] (MSC service thread 1-3)    classloader: ModuleClassLoader for Module "deployment.insurance-module-0.1-SNAPSHOT.war:main" from Service Module Loader
17:51:41,457 INFO  [stdout] (MSC service thread 1-3)    Temporary classloader: org.springframework.instrument.classloading.SimpleThrowawayClassLoader@13acaabd
17:51:41,457 INFO  [stdout] (MSC service thread 1-3)    excludeUnlistedClasses: true
17:51:41,457 INFO  [stdout] (MSC service thread 1-3)    JTA datasource: null
17:51:41,457 INFO  [stdout] (MSC service thread 1-3)    Non JTA datasource: com.mchange.v2.c3p0.ComboPooledDataSource [ acquireIncrement -> 3, acquireRetryAttempts -> 30, acquireRetryDelay -> 1000, autoCommitOnClose -> false, automaticTestTable -> null, breakAfterAcquireFailure -> false, checkoutTimeout -> 0, connectionCustomizerClassName -> null, connectionTesterClassName -> com.mchange.v2.c3p0.impl.DefaultConnectionTester, dataSourceName -> z8kfsx8l1ikdpo61c3bmxu|6b5638a, debugUnreturnedConnectionStackTraces -> false, description -> null, driverClass -> com.mysql.jdbc.Driver, factoryClassLocation -> null, forceIgnoreUnresolvedTransactions -> false, identityToken -> z8kfsx8l1ikdpo61c3bmxu|6b5638a, idleConnectionTestPeriod -> 60, initialPoolSize -> 3, jdbcUrl -> jdbc:mysql://localhost:3306/insurance, maxAdministrativeTaskTime -> 0, maxConnectionAge -> 0, maxIdleTime -> 60, maxIdleTimeExcessConnections -> 0, maxPoolSize -> 5, maxStatements -> 0, maxStatementsPerConnection -> 0, minPoolSize -> 1, numHelperThreads -> 3, numThreadsAwaitingCheckoutDefaultUser -> 0, preferredTestQuery -> select 1, properties -> {user=******, password=******}, propertyCycle -> 0, testConnectionOnCheckin -> false, testConnectionOnCheckout -> false, unreturnedConnectionTimeout -> 0, usesTraditionalReflectiveProxies -> false ]
17:51:41,457 INFO  [stdout] (MSC service thread 1-3)    Transaction type: RESOURCE_LOCAL
17:51:41,457 INFO  [stdout] (MSC service thread 1-3)    PU root URL: file:/home/mircea/jboss-as-7.0.2.Final/modules/sun/jdk/main/service-loader-resources/
17:51:41,457 INFO  [stdout] (MSC service thread 1-3)    Shared Cache Mode: UNSPECIFIED
17:51:41,457 INFO  [stdout] (MSC service thread 1-3)    Validation Mode: AUTO
17:51:41,457 INFO  [stdout] (MSC service thread 1-3)    Jar files URLs []
17:51:41,457 INFO  [stdout] (MSC service thread 1-3)    Managed classes names []
17:51:41,457 INFO  [stdout] (MSC service thread 1-3)    Mapping files names []
17:51:41,457 INFO  [stdout] (MSC service thread 1-3)    Properties []
17:51:41,459 INFO  [stdout] (MSC service thread 1-3) insurance-module 17:51:41.459 [MSC service thread 1-3] DEBUG org.hibernate.ejb.Ejb3Configuration - Detect class: true; detect hbm: true
17:51:41,462 INFO  [stdout] (MSC service thread 1-3) insurance-module 17:51:41.462 [MSC service thread 1-3] DEBUG o.h.ejb.packaging.AbstractJarVisitor - Searching mapped entities in jar/par: file:/home/mircea/jboss-as-7.0.2.Final/modules/sun/jdk/main/service-loader-resources/

【问题讨论】:

  • 给我们看一些配置文件和代码?
  • 如果我从 LocalContainerEntityManagerFactoryBean bean 定义中删除 packagesToScan 属性并使用带有 value="classpath*:META-INF/jpa-persistence.xml" 的 persistenceXmlLocation (并手动将实体类添加到, 有用)。看起来“packagesToScan”功能不适用于 JBoss7(?!)。 @Sajan 你还想要什么(pom.xml,bean 定义)?
  • ANSWER: 看起来我很愚蠢:如果 packagesToScan 没有指向正确的包,那么在 Tomcat 7 中一切正常,但是在部署到 JBoss 时它会失败,如中所述问题。

标签: spring hibernate jpa jboss7.x


【解决方案1】:

如果 packagesToScan 未指向正确的包,则在 Tomcat 7 中一切正常,但在部署到 JBoss 时,如问题中所述,它会失败。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-09-13
    • 2020-04-02
    • 1970-01-01
    • 2013-10-08
    • 2015-01-22
    • 1970-01-01
    • 2011-09-28
    • 2019-12-03
    相关资源
    最近更新 更多