我需要编写一个项目,其中Model,Dao和服务层是一个外部项目,然后将其导入Grails。我们不会使用GORM进行数据库访问。但是,当我尝试导入项目时,我会收到错误。
对于Grails,我使用Grails 2.3.7。我修改了在BuildConfig中使用Hibernate 4。
runtime ":hibernate4:4.3.4"
我在BuildConfig
的依赖项下导入了我的项目compile 'com.mycompany:mycompany-service:1.0.0.0'
在我的外部Maven项目中,这是我在pom.xml中的依赖项
spring-core, spring-context, spring-tx, spring-jdbc, spring-orm (all version is 4.0.2.RELEASE)
hibernate-core, hibernate-entitymanager, hibernate-c3p0 (4.3.4.Final)
mysql-connector-java 5.1.30
我的appContext.xml只定义了几个bean,其余的我只是注释:
<context:component-scan base-package="com.mycompany" />
<context:annotation-config/>
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
...
<property name="packagesToScan" value="com.metabit.xtrain.service.model"/>
</bean>
<bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
<tx:annotation-driven transaction-manager="transactionManager" />
我的DAO和服务是基于注释的。它正在工作,因为我编写了一个调用该服务的Junit,它确实写入数据库没有问题。
@Repository
public class HibernatePersonDAO extends HibernateBaseDAO<Person, Long> implements IPersonDAO {
...
}
@Service("personManager")
@Transactional
public class PersonManagerImpl extends BaseManagerImpl implements IPersonManager {
@Autowired(required = true)
protected IPersonDAO personDAO;
@Override
public void save(Person person) {
personDAO.save(person);
}
}
这就是运行“grails run-app --stacktrace”时我在grails中的错误
2014-04-04 07:55:38,491 [localhost-startStop-1] ERROR context.GrailsContextLoader - Error initializing the application: org.springframework.beans.factory.support.DefaultListableBeanFactory.getDependencyComparator()Ljava/util/Comp
arator;
Message: org.springframework.beans.factory.support.DefaultListableBeanFactory.getDependencyComparator()Ljava/util/Comparator;
Line | Method
->> 131 | invokeMethod in grails.spring.DynamicElementReader
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
| 754 | invokeBeanDefiningClosure in grails.spring.BeanBuilder
| 584 | beans . . . . . . . . . . in ''
| 527 | invokeMethod in ''
| 303 | innerRun . . . . . . . . in java.util.concurrent.FutureTask$Sync
| 138 | run in java.util.concurrent.FutureTask
| 895 | runTask . . . . . . . . . in java.util.concurrent.ThreadPoolExecutor$Worker
| 918 | run in ''
^ 662 | run . . . . . . . . . . . in java.lang.Thread
| Error Forked Grails VM exited with error
请帮忙,即使只是指示我如何获得更多日志来调试问题。谢谢
编辑:
发现问题。我做了没有依赖的Grails项目的战争,它表明我需要降级我的Spring和Hibernate版本的外部项目