0

我正在使用 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)

我正在使用的 oracle 项目在这里

期望的目标/结果:

只需从 glassfishv3 更改为 Jboss AS7

4

2 回答 2

2

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

于 2012-07-12T06:16:30.833 回答
2

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

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

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

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

于 2012-07-11T20:41:26.767 回答