将工程A的实体类打成jar包,在A工程中,测试用列可以良好运行;
将jar放到另外一个工程B中,运行B的用列时,报以下错误:
org.springframework.orm.hibernate3.HibernateQueryException: User is not mapped [from User ep where ep.empeeAcct = ?]; .....后面错误省略。另外:我的实体映射采用的是Hibernate注解方式,
不知道问题描述清楚了没有,有不明白的请跟帖~~~
问题解决,立即散分,老规矩:最先解决问题者得一半以上分!
将jar放到另外一个工程B中,运行B的用列时,报以下错误:
org.springframework.orm.hibernate3.HibernateQueryException: User is not mapped [from User ep where ep.empeeAcct = ?]; .....后面错误省略。另外:我的实体映射采用的是Hibernate注解方式,
不知道问题描述清楚了没有,有不明白的请跟帖~~~
问题解决,立即散分,老规矩:最先解决问题者得一半以上分!
映射问题没有问题,因为A工程有测试用列,对其增删改都进行了测试,没有问题的,
关键是将这些实体打成jar包之后,放到另外一个工程,就找不到实体了!当然,另外一个工程的实体查找方式和A一样!
配置上没有问题,因为如果将源文件拷贝到Eclipse工程B中,则B工程的CRUD测试用列可以跑通。
这些工作已经做了,否则B工程的用列是跑不通的;
配置上没有问题,因为如果将 A工程的实体源文件 拷贝到 Eclipse工程B中,则B工程的CRUD测试用列可以跑通;如果将再将 A工程的实体源文件 从B工程中删除,则B工程用列会报错:User is not mapped!
<mapping resource="com/ctoc/post/pojo/Brand.hbm.xml"/>Annotation:
<mapping class="com.ctoc.post.pojo.Brand"/>
user只存在A工程中,只不过被打成了jar,然后放到B工程;
另外映射用的是注解,不是xml方式;
用的是"packagesToScan",到指定包下寻找实体,估计是打成jar后,spring无法正常找到相应的实体
1。 映射文件不对
2。表没有在hibernate.cfg.xml 文件中配置.
其实问题的关键是:如果实体文件编译之后打成jar,放入另外一个过程中,就算注解和路径没有错误,hibernate也无法映射。感兴趣的自己动手尝试下,会更清楚一些
for (String pkg : this.packagesToScan) {
String pattern = ResourcePatternResolver.CLASSPATH_ALL_URL_PREFIX +
ClassUtils.convertClassNameToResourcePath(pkg) +RESOURCE_PATTERN;
Resource[] resources = this.resourcePatternResolver.getResources(pattern);resources是通过反射去找配置的类,如果packagesToScan指定的报名在jar包中,是找不到路径的,
我这边打断点找到的url是apache-tomcat-6.0.32\webapps\320ServiceManagement\WEB-INF\classes\stim\servicemanagement\entity\AppService.class