Jakarta ee NoSQL&;JavaEE:使用EntityManager时如何使用Jboss服务器?

Jakarta ee NoSQL&;JavaEE:使用EntityManager时如何使用Jboss服务器?,jakarta-ee,nosql,eclipselink,jboss7.x,entitymanager,Jakarta Ee,Nosql,Eclipselink,Jboss7.x,Entitymanager,我正在为glassfish与oracle合作,但不知道如何使用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.St

我正在为glassfish与oracle合作,但不知道如何使用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)
16:08:09597错误[org.jboss.msc.service.fail](msc服务线程1-12)MSC00001:启动服务jboss.persistenceunit失败。“javaee nosql.war#javaee nosql”:org.jboss.msc.service.StartException in service jboss.persistenceunit。“javaee nosql.war#javaee nosql”:启动服务失败
在org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1767)[jboss-msc-1.0.2.GA.jar:1.0.2.GA]
位于java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)[rt.jar:1.6.031]
在java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)[rt.jar:1.6.031]
在java.lang.Thread.run(Thread.java:662)[rt.jar:1.6.031]
原因:javax.persistence.PersistenceException:[PersistenceUnit:javaee nosql]无法生成EntityManagerFactory
位于org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:914)
位于org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:889)
位于org.hibernate.ejb.HibernatePersistence.createContainerEntityManager工厂(HibernatePersistence.java:73)
位于org.jboss.as.jpa.service.PersistenceUnitServiceImpl.CreateContainerEntityManager工厂(PersistenceUnitServiceImpl.java:162)
位于org.jboss.as.jpa.service.PersistenceUnitServiceImpl.start(PersistenceUnitServiceImpl.java:85)
在org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1811)[jboss-msc-1.0.2.GA.jar:1.0.2.GA]
在org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1746)[jboss-msc-1.0.2.GA.jar:1.0.2.GA]
... 3个以上
原因:org.hibernate.MappingException:实体:模型。订单列:城市的映射中重复列(应使用insert=“false”update=“false”进行映射)
位于org.hibernate.mapping.PersistentClass.checkColumnReplication(PersistentClass.java:680)
位于org.hibernate.mapping.PersistentClass.checkPropertyColumnDuplication(PersistentClass.java:702)
位于org.hibernate.mapping.PersistentClass.checkPropertyColumnDuplication(PersistentClass.java:698)
位于org.hibernate.mapping.PersistentClass.checkColumnReplication(PersistentClass.java:724)
位于org.hibernate.mapping.PersistentClass.validate(PersistentClass.java:477)
位于org.hibernate.mapping.RootClass.validate(RootClass.java:268)
位于org.hibernate.cfg.Configuration.validate(Configuration.java:1287)
位于org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1729)
位于org.hibernate.ejb.EntityManagerFactoryImpl。(EntityManagerFactoryImpl.java:84)
位于org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:904)
我正在从事的oracle项目是

期望的目标/结果:


只需将您尝试部署的应用程序从glassfishv3更改为Jboss AS7,它是特定于EclipseLink的,它使用的功能是在EclipseLink中实现的,而不是在Hibernate中实现的。如果您查看一下问题中的日志文件,就会发现您正在使用Hibernate,这就是它不起作用的原因

它在GlasshFish中工作的原因是默认的JPA提供者是EclipseLink。JBossAS7随Hibernate一起提供

从pom.xml文件中可以看到,EclipseLink依赖项确实提供了作用域,但JBoss自然不提供它们


用EclipseLink替换Hibernate的说明可以从中找到。但很可能会出现一些问题。

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

它在GlasshFish中工作的原因是默认的JPA提供者是EclipseLink。JBossAS7随Hibernate一起提供

从pom.xml文件中可以看到,EclipseLink依赖项确实提供了作用域,但JBoss自然不提供它们


用EclipseLink替换Hibernate的说明可以从中找到。但很可能会出现一些问题。

阿伦博客中的应用程序不仅使用EclipseLink作为JPA提供商,而且还使用了EclipseLink的一些专有功能(MongoDB映射)。因此,即使您可以用Hibernate替换它,您仍然会缺少上面提到的特性。
您应该尝试一下HibernateOGM,并用HibernateOGM部件替换所需的功能。。。请参见此处:

Arun博客中的应用程序不仅使用EclipseLink作为JPA提供商,还使用EclipseLink的一些专有功能(MongoDB映射)。因此,即使您可以用Hibernate替换它,您仍然会缺少上面提到的特性。 您应该尝试一下HibernateOGM,并用HibernateOGM部件替换所需的功能。。。请看这里: