??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲一区二区视频,国产爆初菊在线观看免费视频网站 ,欧美自拍一区http://www.aygfsteel.com/xskowscut/category/33433.html<font size=5>做好自己Q做好一切?lt;/font>zh-cnThu, 18 Nov 2010 12:00:50 GMTThu, 18 Nov 2010 12:00:50 GMT60【{】ClassNotFoundException:org.hibernate.hql.ast.HqlToken-weblogic使用hibernate hql问题解决 http://www.aygfsteel.com/xskowscut/articles/338095.htmlxskow!xskow!Mon, 15 Nov 2010 06:51:00 GMThttp://www.aygfsteel.com/xskowscut/articles/338095.htmlhttp://www.aygfsteel.com/xskowscut/comments/338095.htmlhttp://www.aygfsteel.com/xskowscut/articles/338095.html#Feedback0http://www.aygfsteel.com/xskowscut/comments/commentRss/338095.htmlhttp://www.aygfsteel.com/xskowscut/services/trackbacks/338095.html

一般我们用hibernateQ最喜欢用的应该是hql查询吧,较ؓ灉|写法也跟sql怼Q不q有的同志喜Ƣ用criteria查询的可能不会看到这个异怿息,呵呵?/p>

今天把一hibernate war目部v到wl10.3.3上,部v是不会报错的Q但是当你点到某个功能,q个功能下面有hql查询Q就会报错,报错信息如下Q?/p>

java.lang.RuntimeException: ClassNotFoundException: org.hibernate.hql.ast.HqlToken [select ...]; nested exception is org.hibernate.QueryException: ClassNotFoundException: org.hibernate.hql.ast.HqlToken [select ...]
at …
at javax.servlet.http.HttpServlet.service(HttpServlet.java:707)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227)
at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125)
at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:300)
at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:183)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.doIt(WebAppServletContext.java:3686)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3650)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121)
at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2268)
at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2174)
at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1446)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:201)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:173)
>

通过自己做的JarFinder工P明显可以在部|的war包中看到 org.hibernate.hql.ast.HqlToken c,在hibernate-core-3.3.0.GA.jar中,q报错不正常啊,估计是某些包跟wl冲突了,后来google了一下,扑ֈ一个国外的帖子Q说是antlr的问题,亲n试验了一ơ,果然是这个问题,现在把解决Ҏ(gu)跟大家分享下Q?/p>

你的war包打入ear包中Q当然你q需要有META-INF文gQ带有weblogic-application.xml和application.xmlQ主要就是在weblogic-application.xml中解冻I声明prefer-application-packagesQ如下所C?关键line3-5)Q?/p>

<?xml version="1.0" encoding="UTF8"?>
<weblogic-application>
<prefer-application-packages>
<package-name>antlr.*</package-name>
</prefer-application-packages>
</weblogic-application>

而application.xmlp为简单了Q这里就不说了,怿打过ear包的都应该知道怎么回事Q呵?打包后再ơ发布,问题解决?/p>

附上解决问题原帖链接Q?a style="text-decoration: none; color: #3478e3; ">http://forum.springsource.org/showthread.php?t=36860

不会写application.xml的可以参考一下java的dtdQ?a style="text-decoration: none; color: #3478e3; ">http://java.sun.com/dtd/

再附上一?8q的英文文章Qblogspot的,讲的是weblogic jws+spring+hibernate开发的Q需要翻墙才能看刎ͼhttp://timezra.blogspot.com/2008/09/spring-hibernate-and-jax-ws-webservices.html

Ƣ迎讨论~


原文链接Q?span style="color: #000000; font-family: 'Times New Roman'; line-height: normal; font-size: medium; ">http://www.shaojiahao.org/java/hibernate/weblogic-hibernate-hql-problem



xskow! 2010-11-15 14:51 发表评论
]]>
关于Hibernate Native sql query的诡异问?/title><link>http://www.aygfsteel.com/xskowscut/articles/281376.html</link><dc:creator>xskow!</dc:creator><author>xskow!</author><pubDate>Thu, 11 Jun 2009 01:57:00 GMT</pubDate><guid>http://www.aygfsteel.com/xskowscut/articles/281376.html</guid><wfw:comment>http://www.aygfsteel.com/xskowscut/comments/281376.html</wfw:comment><comments>http://www.aygfsteel.com/xskowscut/articles/281376.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.aygfsteel.com/xskowscut/comments/commentRss/281376.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/xskowscut/services/trackbacks/281376.html</trackback:ping><description><![CDATA[        当要做连表查询时Q比如a和bQ如果a1和b1都有一个name字段Q用下面的sql语句:<br /> <span style="color: red">        select a.name, b.name from a1 a, b1 b<br /> <font color="#000000">        假设不作M处理Q毫无疑问返回的是object[]的ListQobject[0]是a.name, object[1]是b.name。但是,咋们想错了。。。object[0]和object[1]一ha.nameQ开始认为是hibernate调用jdbc的resultset时用了如getString("name")q样的东东,所以得到的都是W?个倹{好吧,加个别名试试Q?br /> </font><span style="color: red">        select a.name as name1, b.name as name2 from a1 a, b1 b</span><br /> <span style="color: #000000">        q好像可以呀。。。但是却报错Q找不到name列。。?br />         好吧Q来个ResultTransformer吧!假设转换目标cMؓTestDTO.class:<br /> <div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img id="Codehighlighter1_20_108_Open_Image" onclick="this.style.display='none'; Codehighlighter1_20_108_Open_Text.style.display='none'; Codehighlighter1_20_108_Closed_Image.style.display='inline'; Codehighlighter1_20_108_Closed_Text.style.display='inline';" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" alt="" /><img id="Codehighlighter1_20_108_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_20_108_Closed_Text.style.display='none'; Codehighlighter1_20_108_Open_Image.style.display='inline'; Codehighlighter1_20_108_Open_Text.style.display='inline';" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedBlock.gif" align="top" alt="" /><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">class</span><span style="color: #000000"> TestDTO</span><span id="Codehighlighter1_20_108_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.aygfsteel.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_20_108_Open_Text"><span style="color: #000000">{<br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />    </span><span style="color: #0000ff">private</span><span style="color: #000000"> String name1;<br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />    </span><span style="color: #0000ff">private</span><span style="color: #000000"> String name2;<br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" /><img src="http://www.aygfsteel.com/Images/dot.gif" alt="" /><br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />    </span><span style="color: #008000">//</span><span style="color: #008000">getters and setters</span><span style="color: #008000"><br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" /></span><span style="color: #000000"><img src="http://www.aygfsteel.com/Images/dot.gif" alt="" /><br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" alt="" />}</span></span></div>         q回应该好了吧?q是一L错误。。?br />       <span style="color: #ff0000">  注意Q用ResultTransformer的时候,别名注射不能用{name1}q种形式的,q种形式只适用于addEntity的情况!</span><br />         Z么我要用sql查询Q由于特D情况,我用一些和数据库有依赖的函敎ͼ以后转数据库要是知道不兼容也肯定是sql那块的,而不是hqlQ解决问题就方便多了。(?hql一样可以用特定数据库的函数Q而且我连的是多个表,每个表字D十来个Q如果用实体查询的话Q每一行就是三个对象,而我需要的只是5个字D而已。而且如果可以用ResultTransformer的话Q操作v来也十分方便?br />         不知道有谁也遇到q同样问题?q是说大安不用hibernateq行sql查询Q不是什么情况?<br />         得再ơ研Ihibernate官方文档了。。。从文档的那一章中Q完全没有找到有同名字段然后又用ResultTransformer的情c。?br /> <br /> <br /> </span></span> <img src ="http://www.aygfsteel.com/xskowscut/aggbug/281376.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/xskowscut/" target="_blank">xskow!</a> 2009-06-11 09:57 <a href="http://www.aygfsteel.com/xskowscut/articles/281376.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>华南理工大学校运会计分系l项目ȝ(一)http://www.aygfsteel.com/xskowscut/articles/239734.htmlxskow!xskow!Mon, 10 Nov 2008 12:39:00 GMThttp://www.aygfsteel.com/xskowscut/articles/239734.htmlhttp://www.aygfsteel.com/xskowscut/comments/239734.htmlhttp://www.aygfsteel.com/xskowscut/articles/239734.html#Feedback1http://www.aygfsteel.com/xskowscut/comments/commentRss/239734.htmlhttp://www.aygfsteel.com/xskowscut/services/trackbacks/239734.html         在这个项目当中,有什么值得写在我的博客上面呢Q有的。本目分层也是采用l典的血模式。由底向上共四层Qmodel-->dao-->service-->action。其中model采用HibernateQ底层数据库用MySQL5Q在Hibernate斚wQ我用了比较新的annotationsQ而不是^常的*.hbm.xml。确实,annotations用v来比较方便,但是和POJO的耦合度就大多了。记得有些配错的时候要一个一个getterLannotationQ呵c。?br />         在Hibernate annotation斚wQ还是有些东西值得ȝ一下,首先是annotation写在是什么地方,最方便的方法是写在各个field的getter上面Q这样就不用额外的annotationQ也大家采用此方法,另一U也是写在field声明上面Q这L话需要在cMҎ(gu)加其他annotationQ我当时是没成功Q呵c其ơ是U联操作Q也是cascadeQ需要注意的是当两个实体关系是一对多和多对多的时候,比如班与学生,学生与课E,明显班与学生是一对多Q学生与评是多对多关系Q那么当我们需要设|联时候怎么办呢Q在hibernate中,cascade分有4U,分别是CascadeType.PERSIST,CascadeType.MERGE,CascadeType.REFRESH,CascadeType.REMOVE。比如是persistQ如果在刚才的例子来_应该q样配置Q?br />
 1//班实体
 2@Entity
 3@Table(name="T_CLASS")
 4public class Clazz{
 5  
 6  private Set<Student> students;
 7  
 8  
 9  @OneToMany
10  (cascade={CascadeType.REMOVE,CascadeType.MERGE, CascadeType.PERSIST}, fetch=FetchType.LAZY, mappedBy="clazz")
11  public Set<Student> getStudents(){
12    return students;
13  }
 
14}

15

 1//学生实体
 2@Entity
 3@Table(name="T_STUDENT")
 4
 5public class Student{
 6  
 7  private Clazz clazz;
         private Set<Course> courses;
 8  
 9  @ManyToOne
10  @JoinColumn(name="CLAZZ_ID")
11  public Clazz getClazz(){
12    return clazz;
13  }

14  
          @ManyToMany
          @JoinTable(name="T_STUDENT_COURSE")
          public Set<Course> getCourses(){
                return courses;
         } 
15}

 1//评实体
 2public class Course{
 3  
 4  private Set<Student> students;
 5  
 6  @ManyToMany(mappedBy="courses" cascade={CascadeType.PERSIST, CascadeType.REMOVE})
 7  public Set<Student> getStudents(){
 8    return students;
 9  }

10}

在Clazz的OneToMany和Course的ManyToMany中,我们都可以看到有CascadeType.PERSIST和CascadeType.REMOVE。具体到底是什么意思呢Qpersist是指当持久化实体的时候,如果有关联的集合Qƈ且设成persistӞq集合也一q存入数据库当中。但是如果真正写一下,然后使用的话Q我们会发现QOneToMany讄q个Ҏ(gu)不v作用。比如我新徏一个班U,q直接赋?0个学生的一个集合,然后调用dao的saveҎ(gu)Q看看数据库Q怎么回事Q怎么只有班持久化了Q关联学生一个没存到数据库?然后试试新徏评Qƈ且选上要修q门评学生Q然后持久化评Q看看数据库Q怎么搞的Q这ơ双斚w持久化了Q即中间表已l插入了相关的记录。造成OneToMany用persist是什么原因?个h理解Q学生属于一个实体,其持久化应当依靠自己相应的daoQ一个一个student的存储。就好比student和course的中间表Q我们上面假设中间表只有STUDENT_ID和COURSE_IDQƈ且分别连向student表和course表的主键Q如果你有特D需求,比如是要一个score列(评成WQ,那么q时候你q想用ManyToMany配置的话Q会出现好多问题Q除非你允许成W是空的,但是即成W可以为空Q如果你需要修Ҏ(gu)l怎么办呢Q先取出q个学生Q然后遍历其评集合Q找到这个课E然后再持久化不行?应该可以吧,但是是不是指需要先删除q个学生选的评Q然后再这些再ơ持久化一ơ?q个Ҏ(gu)l对可以Q不q我没h会这栗。。呵c。。当中间表有其他与两方表都没有关pȝ列时Q你应当Z间表也映一个实体,用这个实体的相应dao修改相应的记录。在q种情况下用ManyToManyq有另一个问题,如果你的hibernate sessionq没有关闭,你会发现提错Q说你打删除即再ơ持久化的记录。用OpenSessionInViewFilter的时候你׃发现q个问题了。呵c。?br />         q有一个,Hibernate官方不推荐用联合主键,原来的我׃怿用联合主键会怎样Q还不行吗?要不行那q不是你框架太烂Q实践过之后Q我改变了我的看法。。。假如你是普通的一个表Q用联合主键没有Q何问题,但是假如你的表是一个中间表Qƈ且有和两个关联表无关的列Q就像T_STUDENT_COURSEQ我们在设计数据库的时候,很容易想到用STUDENT_ID和COURSE_ID来作Z键,不错Q但是如果你用hibernate映射实体的时候你知道有什么麻烦吗Q首先这两个都是外键Q在hibernate中就是需要有两个兌实体的对象引用,那么q两个作为@Id是吧Q可以啊Q但是当你持久化的时候,会提Cstudent在T_STUDENT_COURSE中无法找到。ؓ什么?因ؓ你数据库׃个ID呀Q而你q里配的可是一个实体引用呀Q其实这也是可以解决了,是解决办法q回一点点Q在hibernate外键兌的时候可以指定实体引用,是说比如你StudentCourse实体Q有一个student的引用,可以定义q样一个columnQstudentIdQ这个Id可以兌student引用Q具体写法我׃写出来了Q在hibernate官方文档写得相当详细Q很Ҏ(gu)验证。看Q就一个外键都q样了,多个外键q得了?当然Q如果普通的单外键引用不会生这L问题Q直接配一个实体引用就可以解决问题。问题是可以解决的,关键是以后维护v来是否方便?我做q就知道Q一点不单,所以后来还是改了。。。不推荐大家使用联合主键?/p>

xskow! 2008-11-10 20:39 发表评论
]]>
վ֩ģ壺 | ԫ| | ׯ| ϲ| | 㽭ʡ| | ͭɽ| ԭ| ˳| | | ˻| | Ԫ| | Т| | | | | | | | | ͷ| Ī| | ƽ| | | ͤ| ӳ| | ˮ| | | н| Ű| Ȫ|