仓酷云

标题: 了解下JAVA的Hibernate映照文件打成jar,JUnit测试没法准确实行的成绩剖析 [打印本页]

作者: 兰色精灵    时间: 2015-1-18 11:00
标题: 了解下JAVA的Hibernate映照文件打成jar,JUnit测试没法准确实行的成绩剖析
如果你学习的是市场营销,是销售,也许参加大课堂的学习会更合适,因为你的工作能力中有个基础就是搭建自己的人脉,
之前将Hibernate的实体类及其映照文件也放到项目中,因为有多个项目利用统一个数据库,Hibernate实体类和映照文件反复,方便于保护和晋级。因而将其抽掏出来,打成jar包,再引进回项目。
实践操纵中,发明个诡异的成绩:项目运转没成绩,可是JUnit单位测试不克不及运转(办法利用了HQL语句时),老是报org.hibernate.hql.ast.QuerySyntaxException的毛病,申明没有找到映照文件,不晓得为什么。详细报错信息以下:
org.springframework.orm.hibernate3.HibernateQueryException:Fsettlementisnotmapped[selectffromFsettlementfwhere1=1andf.fsettlementId=:fsettlementId];
nestedexceptionisorg.hibernate.hql.ast.QuerySyntaxException:Fsettlementisnotmapped[selectffromFsettlementfwhere1=1andprePayType=PRE_PAYandf.supplierId=:supplierIdandf.payTime>=:startDateandf.payTime<=:endDateandf.stockEleSupplierId=:stockEleSupplierIdandf.payType=:payTypeandf.fsettlementId=:fsettlementId]
...
Causedby:org.hibernate.hql.ast.QuerySyntaxException:Fsettlementisnotmapped[selectffromFsettlementfwhere1=1andprePayType=PRE_PAYandf.supplierId=:supplierIdandf.payTime>=:startDateandf.payTime<=:endDateandf.stockEleSupplierId=:stockEleSupplierIdandf.payType=:payTypeandf.fsettlementId=:fsettlementId]
...
Hibernate的设置以下:
<beanid="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<propertyname="dataSource"ref="dataSource"/>
<!--del利用mappingJarLocations,不克不及再利用mappingDirectoryLocations,否则会报错
<propertyname="mappingDirectoryLocations">
<list>
<value>classpath*:/com/allen/hbm/</value>
</list>
</property>
-->
<propertyname="mappingJarLocations">
<list>
<value>WEB-INF/lib/model-core*.jar</value>
</list>
</property>
<propertyname="hibernateProperties">
<props>
<propkey="hibernate.dialect">${hibernate.stock.dialect}</prop>
<propkey="hibernate.show_sql">${hibernate.stock.show_sql}</prop>
<propkey="hibernate.cache.provider_class">${hibernate.stock.cache.provider_class}
</prop>
</props>
</property>
</bean>
Google上找到的办法逐一试过,大概是毛病太初级,基本就没人会犯此毛病吧。找不到办理办法,但是项目仍是要持续。剖析了一下,文件是不是在jar中,关于JUnit来讲,都是从classpath中读取,与其他有关。
因而实验改回本来的设置,发明仍是不可;
岂非是绝对路径,不是相对路径?因而将”/”往失落,仍是不可;
岂非要指定文件才行吗?再一次实验,居然乐成了!不分明,Hibernate不是会主动扫描的嘛;固然成功了,可是要逐一指定文件名,一定不实际;
因而各类实验,将了局逐一纪录,
<propertyname="mappingLocations">
<value>classpath*:com/allen/hbm/*.hbm.xml</value>
<!--<value>classpath:com/allen/hbm/*.hbm.xml</value>--><!--此种写法报错,不克不及辨认-->
<!--<value>classpath*:/com/alenn/hbm/</value>--><!--此种写法报错,不克不及辨认-->
<!--<value>classpath*:/com/allen/hbm</value>--><!--此种写法报错,不能辨认-->
<!--<value>classpath*:com/allen/hbm/</value>--><!--此种写法报错,不能辨认-->
<!--<value>classpath*:com/allen/hbm</value>--><!--此种写法报错,不能辨认-->
</property>
成绩固然办理了,但另有一点仍是不分明,为什么项目运转没成绩呢?
检察本栏目更多出色内容:http://www.bianceng.cn/Programming/Java/

在ruby里才是一切皆对象。当然我不并不是很了解ruby,但是ruby确实是将语法简化得很好。
作者: 灵魂腐蚀    时间: 2015-1-20 12:44
应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1990年代互联网的发展
作者: 冷月葬花魂    时间: 2015-1-23 16:13
吧,现在很流行的Structs就是它的一种实现方式,不过Structs用起来实在是很繁,我们只要学习其精髓即可,我们完全可以设计自己的MVC结构。然后你再研究一下软件Refactoring (重构)和极限XP编程,相信你又会上一个台阶。 做完这些,你不如整理一下你的Java代码,把那些经典的程序和常见的应用整理出来,再精心打造一番,提高其重用性和可扩展性。你再找几个志同道合的朋友成立一个工作室吧
作者: 兰色精灵    时间: 2015-1-31 18:15
设计模式是高级程序员真正掌握面向对象核心思想的必修课。设计模式并不是一种具体"技术",它讲述的是思想,它不仅仅展示了接口或抽象类在实际案例中的灵活应用和智慧
作者: 简单生活    时间: 2015-2-2 16:18
所以现在应用最广泛又最好学的就是J2EE了。 J2EE又包括许多组件,如Jsp,Servlet,JavaBean,EJB,JDBC,JavaMail等。要学习起来可不是一两天的事。那么又该如何学习J2EE呢?当然Java语法得先看一看的,I/O包,Util包,Lang包你都熟悉了吗?然后再从JSP学起。
作者: 老尸    时间: 2015-2-8 00:55
你就该学一学Servlet了。Servlet就是服务器端小程序,他负责生成发送给客户端的HTML文件。JSP在执行时,也是先转换成Servlet再运行的。虽说JSP理论上可以完全取代Servlet,这也是SUN推出JSP的本意,可是Servlet用来控制流程跳转还是挺方便的,也令程序更清晰。接下来你应该学习一下Javabean了,可能你早就看不管JSP在HTML中嵌Java代码的混乱方式了,这种方式跟ASP又有什么区别呢?
作者: 因胸联盟    时间: 2015-2-23 20:16
不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。
作者: 小魔女    时间: 2015-3-7 10:08
应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1990年代互联网的发展
作者: 再现理想    时间: 2015-3-21 14:04
你一定会高兴地说,哈哈,原来成为Java高手就这么简单啊!记得Tomjava也曾碰到过一个项目经理,号称Java很简单,只要三个月就可以学会。




欢迎光临 仓酷云 (http://ckuyun.com/) Powered by Discuz! X3.2