【问题标题】:NoSQL & Java EE : How to use a Jboss server when using EntityManager?NoSQL & Java EE:使用 EntityManager 时如何使用 Jboss 服务器?
【发布时间】:2012-07-11 20:13:32
【问题描述】:

我使用 oracle example 为 glassfish 工作,但不知道如何使用 Jboss AS7 代替 glassfishV3。我不断遇到的错误是

16:08:09,597 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-12) MSC00001: Failed to start service jboss.persistenceunit."javaee-nosql.war#javaee-nosql": org.jboss.msc.service.StartException in service jboss.persistenceunit."javaee-nosql.war#javaee-nosql": Failed to start service
    at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1767) [jboss-msc-1.0.2.GA.jar:1.0.2.GA]
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) [rt.jar:1.6.0_31]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) [rt.jar:1.6.0_31]
    at java.lang.Thread.run(Thread.java:662) [rt.jar:1.6.0_31]
Caused by: javax.persistence.PersistenceException: [PersistenceUnit: javaee-nosql] Unable to build EntityManagerFactory
    at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:914)
    at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:889)
    at org.hibernate.ejb.HibernatePersistence.createContainerEntityManagerFactory(HibernatePersistence.java:73)
    at org.jboss.as.jpa.service.PersistenceUnitServiceImpl.createContainerEntityManagerFactory(PersistenceUnitServiceImpl.java:162)
    at org.jboss.as.jpa.service.PersistenceUnitServiceImpl.start(PersistenceUnitServiceImpl.java:85)
    at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1811) [jboss-msc-1.0.2.GA.jar:1.0.2.GA]
    at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1746) [jboss-msc-1.0.2.GA.jar:1.0.2.GA]
    ... 3 more
Caused by: org.hibernate.MappingException: Repeated column in mapping for entity: model.Order column: city (should be mapped with insert="false" update="false")
    at org.hibernate.mapping.PersistentClass.checkColumnDuplication(PersistentClass.java:680)
    at org.hibernate.mapping.PersistentClass.checkPropertyColumnDuplication(PersistentClass.java:702)
    at org.hibernate.mapping.PersistentClass.checkPropertyColumnDuplication(PersistentClass.java:698)
    at org.hibernate.mapping.PersistentClass.checkColumnDuplication(PersistentClass.java:724)
    at org.hibernate.mapping.PersistentClass.validate(PersistentClass.java:477)
    at org.hibernate.mapping.RootClass.validate(RootClass.java:268)
    at org.hibernate.cfg.Configuration.validate(Configuration.java:1287)
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1729)
    at org.hibernate.ejb.EntityManagerFactoryImpl.<init>(EntityManagerFactoryImpl.java:84)
    at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:904)

我正在使用的 oracle 项目是here

期望的目标/结果:

只需从 glassfishv3 更改为 Jboss AS7

【问题讨论】:

    标签: jakarta-ee nosql eclipselink jboss7.x entitymanager


    【解决方案1】:

    您尝试部署的应用程序是 EclipseLink 特定的,它使用在 EclipseLink 中实现但在 Hibernate 中没有实现的功能。如果您查看问题中的日志文件,您会发现此时您正在使用 Hibernate,这就是它不起作用的原因。

    它在 GlasshFish 中工作的原因是默认的 JPA 提供程序是 EclipseLink。 JBoss AS 7 附带 Hibernate。

    正如您从 pom.xml 文件中看到的,EclipseLink 依赖项确实提供了作用域,但它们自然不是由 JBoss 提供的。

    可以从here 找到用 EclipseLink 替换 Hibernate 的说明。但是很有可能会弹出一些problems

    【讨论】:

      【解决方案2】:

      Arun 博客中的应用程序不仅使用 EclipseLink 作为 JPA 提供程序,而且还使用了一些 EclipseLink 专有功能(MongoDB 映射)。因此,即使您可以将其替换为 Hibernate,您仍然会缺少上述功能。 您应该尝试使用 HibernateOGM 并用 Hibernate OGM 部件替换所需的功能......请参见此处:http://www.hibernate.org/subprojects/ogm.html

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-10-07
        • 2011-05-02
        • 2017-10-23
        • 2017-06-02
        • 1970-01-01
        相关资源
        最近更新 更多