隨筆-42  評(píng)論-578  文章-1  trackbacks-0

                  寫(xiě)這個(gè)主題的文章在網(wǎng)絡(luò)上應(yīng)該暫時(shí)沒(méi)有吧,也看過(guò)許多SSH整合開(kāi)發(fā)的書(shū),許多都是舊版本的框架整合,而且大部分都是以XML配置文件的方式,即使談到Annotation也是針對(duì)其中一個(gè)框架而言的。隨著開(kāi)源框架更新版本中不斷引進(jìn)對(duì)Annotation的支持,使得我們可以用單方面去管理我們的類(lèi)與關(guān)系,而不用像以往那樣,一旦遇到問(wèn)題,就要不斷在Java視圖和XML視圖中切換。好,開(kāi)始吧,既然網(wǎng)絡(luò)中暫時(shí)沒(méi)有這方面的文章,我就來(lái)開(kāi)創(chuàng)個(gè)先例。自己探索學(xué)習(xí)一下,也讓大家來(lái)學(xué)習(xí)和提出批評(píng)和建議。
                  首選說(shuō)一下我們的開(kāi)發(fā)準(zhǔn)備吧!
                  開(kāi)發(fā)環(huán)境:Tomcat 6.0,JDK1.6,MySQL5.0
                  開(kāi)發(fā)工具:Eclipse-jee(Eclipse的官網(wǎng)上下載)
                  所要下載的框架包:struts-2.0.11.2-all.zipspring-framework-2.5.5-with-dependencies.ziphibernate-distribution-3.3.1.GA-dist.zip,這三個(gè)壓縮包在其官方網(wǎng)站都可以下載。當(dāng)然,這個(gè)小項(xiàng)目所要用到不止這些,我們用到的時(shí)候再去下載。
                  好,我們來(lái)開(kāi)始第一階段的探索——Hibernate3.3的Annotation的實(shí)現(xiàn)。
                  新建我們的Dynamic Web Project,取名為"ssh_annotation”,配置Tomcat6.0的支持,打開(kāi)MySQL,建立一個(gè)空數(shù)據(jù)庫(kù),取名為"ssh_annotation"。記得,要引進(jìn)MySQL的JDBC驅(qū)動(dòng)包mysql-connector-java-5.0.8-bin.jar
                  在解壓縮的hibernate-distribution-3.3.1.GA目錄中,把hibernate.jar,和\lib\required\下的所用jar包引進(jìn)到我們項(xiàng)目的lib目錄下。
                  不知道用過(guò)Hibernate3.3開(kāi)發(fā)的朋友會(huì)不會(huì)遇到過(guò)這樣的問(wèn)題:把上面的包都準(zhǔn)備好的,開(kāi)發(fā)Hibernate測(cè)試類(lèi)時(shí),會(huì)報(bào)Caused by: java.lang.NoClassDefFoundError: org/slf4j/impl/StaticLoggerBinder 或者Caused by: java.lang.NoClassDefFoundError: org/apache/log4j/LogManager的錯(cuò)誤。這是因?yàn)镠ibernate3.3提供的jar包,缺少了slf4j-log4j12.jar這個(gè)包。解決辦法是:在Hibernate的官方網(wǎng)站上下載hibernate-annotations-3.4.0.GA.zip,解壓縮,把其\lib\下的slf4j-log4j12.jar引進(jìn)我們項(xiàng)目的lib目錄下。而我們引進(jìn)這個(gè)jar包后,若我們沒(méi)有引進(jìn)log4j.jar的話,就會(huì)報(bào)java.lang.NoClassDefFoundError: org/apache/log4j/LogManager的錯(cuò)誤,可能是slf4j-log4j12.jar要用調(diào)用log4j的類(lèi)吧。我們也引進(jìn)log4j.jar即行。

                  當(dāng)然,hibernate-annotations-3.4.0.GA.zip 是我們開(kāi)發(fā)Hibernate Annotation所要用到的,除以上面那些jar包外,我們還要引進(jìn)其hibernate-annotations.jar,及其\lib\下的hibernate-commons-annotations.jarejb3-persistence.jar。好,暫時(shí)就這些,我們接下來(lái)需要用到哪些jar包時(shí)再引進(jìn)。
                  好,第一步,來(lái)開(kāi)發(fā)我們的實(shí)體類(lèi)User。代碼如下:
          package com.rong.entity;

          import javax.persistence.Column;
          import javax.persistence.Entity;
          import javax.persistence.GeneratedValue;
          import javax.persistence.GenerationType;
          import javax.persistence.Id;
          import javax.persistence.Table;

          @Entity
          @Table(name
          ="tb_user")
          public class User {
              
              @Id    @GeneratedValue(strategy
          =GenerationType.IDENTITY)
              
          private int id;
              
              @Column(name
          ="username", length=15)
              
          private String username;
              
              @Column(name
          ="password", length=15)
              
          private String password;
              
              
          public int getId() {
                  
          return id;
              }

              
          public void setId(int id) {
                  
          this.id = id;
              }

              
          public String getUsername() {
                  
          return username;
              }

              
          public void setUsername(String username) {
                  
          this.username = username;
              }

              
          public String getPassword() {
                  
          return password;
              }

              
          public void setPassword(String password) {
                  
          this.password = password;
              }


          }
                  簡(jiǎn)單解釋一下吧:
                  @Entity定義User類(lèi)為實(shí)體類(lèi),@Id定義該屬性對(duì)應(yīng)的列為主鍵,@GeneratedValue(strategy=GenerationType.IDENTITY)定義主鍵生成策略為Indentity,適用于MySQL和MS SQL等數(shù)據(jù)庫(kù)。@Column(name="username", length=15)定義列名和取值長(zhǎng)度。
                  應(yīng)該不難的,更多有關(guān)Hibernate的注解,請(qǐng)下載并參考我整理的Hibernate Annotation幫助文檔 /Files/rongxh7/hibernateAannotations.rar 。慢慢學(xué)吧!
                  
                  當(dāng)然,必要的XML配置文件還是要有的:
          <?xml version='1.0' encoding='utf-8'?>
          <!DOCTYPE hibernate-configuration PUBLIC
                  "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
                  "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"
          >

          <hibernate-configuration>

              
          <session-factory>

                  
          <!-- Database connection settings -->
                  
          <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
                  
          <property name="connection.url">jdbc:mysql://localhost:3306/ssh_annotation</property>
                  
          <property name="connection.username">root</property>
                  
          <property name="connection.password">root</property>

                  
          <!-- 數(shù)據(jù)庫(kù)言 -->
                  
          <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
                  
                  
          <!-- 將Session扔到線程里去處理 -->
                  
          <property name="current_session_context_class">thread</property>

                  
          <!-- 在控制臺(tái)打印SQL語(yǔ)句 -->
                  
          <property name="show_sql">true</property>

                  
          <!-- 自動(dòng)把實(shí)體類(lèi)與屬性映射成數(shù)據(jù)庫(kù)中的表與列 -->
                  
          <property name="hbm2ddl.auto">update</property>
                   
                  
          <!--  
                  <mapping resource="com/rong/entity/User.hbm.xml"/>
                   
          -->
                   
                   
          <!-- 在Hibernate中注冊(cè)User實(shí)體類(lèi),區(qū)別于上面注釋掉的resource寫(xiě)法 -->
                   
          <mapping class="com.rong.entity.User"/>

              
          </session-factory>

          </hibernate-configuration>

                  到這里,我們可以運(yùn)行Tomcat,Hibernate會(huì)根據(jù)hbm2ddl.auto自動(dòng)地把實(shí)體類(lèi)與屬性轉(zhuǎn)變成數(shù)據(jù)庫(kù)中的表與列。但這一步,要事先在數(shù)據(jù)庫(kù)中建立一個(gè)名為"ssh_annotation"的空數(shù)據(jù)庫(kù)。好了,看一下,你的數(shù)據(jù)庫(kù)中是否有"tb_user"的表生成了?!
                  接下來(lái),我們來(lái)開(kāi)發(fā)一個(gè)包裝器類(lèi),取名HibernateUtil,代碼如下:
          package test.rong.hibernate;

          import org.hibernate.SessionFactory;
          import org.hibernate.cfg.AnnotationConfiguration;

          public class HibernateUtil {
              
              
          private static final SessionFactory sessionFactory;

              
          static {
                  
          try {
                      
          //用xxx.hbm.xml形式配置實(shí)體映射
                      
          //sessionFactory = new Configuration().configure().buildSessionFactory();
                      
          //用Annotation形式配置實(shí)體映射
                      sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory();
                  }
           catch (Throwable ex) {
                      System.err.println(
          "Initial SessionFactory creation failed." + ex);
                      
          throw new ExceptionInInitializerError(ex);
                  }

              }


              
          public static SessionFactory getSessionFactory() {
                  
          return sessionFactory;
              }


          }

                  學(xué)過(guò)Hibernate的朋友們,應(yīng)該對(duì)這個(gè)類(lèi)不陌生吧。在此,我就不多解釋啦,注意一下我注釋的地方就行。下面,我們來(lái)進(jìn)行測(cè)試,下載最新版本的Junit4.5.jar,試一下感覺(jué)如何。當(dāng)然,舊版本的應(yīng)該也沒(méi)問(wèn)題的啦!寫(xiě)測(cè)試代碼如下:    

          package test.rong.hibernate;

          import java.util.Iterator;
          import java.util.List;
          import org.hibernate.Query;
          import org.hibernate.Session;
          import org.junit.Before;
          import org.junit.Test;
          import com.rong.entity.User;

          public class EntityTest {
              
              
          private Session session;
              
              @Before
              
          public void initSession(){
                  
          this.session = HibernateUtil.getSessionFactory().getCurrentSession();
              }

              
              @Test    
          //測(cè)試添加用戶(hù)
              public void testSave(){
                  session.beginTransaction();
                  User user 
          = new User();
                  user.setUsername(
          "rongxh7");
                  user.setPassword(
          "blogjava");
                  session.save(user);
                  session.getTransaction().commit();
              }

              
              @Test    
          //測(cè)試查詢(xún)用戶(hù)列表
              @SuppressWarnings("unchecked")
              
          public void testQuery(){
                  session.beginTransaction();
                  Query query 
          = session.createQuery("from User u");
                  List
          <User> users = query.list();
                  
          for(Iterator<User> it = users.iterator() ; it.hasNext() ; ){
                      User user 
          = it.next();
                      System.out.println(
          "username = " + user.getUsername());
                  }

                  session.beginTransaction().commit();
              }

              
              @Test    
          //測(cè)試查詢(xún)單個(gè)用戶(hù)
              public void testGet(){
                  session.beginTransaction();
                  User user 
          = (User)session.get(User.class1);
                  System.out.println(
          "username = " + user.getUsername());
                  session.getTransaction().commit();
              }

              
              @Test    
          //測(cè)試查詢(xún)修改用戶(hù)
              public void testUpdate(){
                  session.beginTransaction();
                  User user 
          = (User)session.load(User.class1);
                  user.setPassword(
          "hello blogjava");
                  session.update(user);
                  session.getTransaction().commit();
              }

              
              @Test    
          //測(cè)試刪除用戶(hù)
              public void testDelete(){
                  session.beginTransaction();
                  session.delete(session.load(User.
          class1));
                  session.getTransaction().commit();
              }


          }

                  
                  到此,我們的Hibernate Annotation開(kāi)發(fā)完成了。你成功了沒(méi)?如果有什么問(wèn)題,請(qǐng)回復(fù),我盡力為你解答!好,第一階段暫告一段落。不要忘記,我們是要做的是基于Annotatioln的SSH整合開(kāi)發(fā),讓我們一起期待下一階段吧!
                  (*^-^*) 本文原創(chuàng),轉(zhuǎn)載請(qǐng)注明出處, http://www.aygfsteel.com/rongxh7謝謝! (*^-^*)


          本文原創(chuàng),轉(zhuǎn)載請(qǐng)注明出處,謝謝!http://www.aygfsteel.com/rongxh7(心夢(mèng)帆影JavaEE技術(shù)博客)
              

          posted on 2009-03-23 21:05 心夢(mèng)帆影 閱讀(15663) 評(píng)論(38)  編輯  收藏 所屬分類(lèi): Struts2.xHibernateSpring

          評(píng)論:
          # re: 基于Annotation的Struts2.0+Hibernate3.3+Spring2.5整合開(kāi)發(fā) (1) 2009-03-23 21:40 | 何奇山
          沙發(fā)。。寫(xiě)的很好!!!  回復(fù)  更多評(píng)論
            
          # re: 基于Annotation的Struts2.0+Hibernate3.3+Spring2.5整合開(kāi)發(fā) (1) 2009-03-23 21:42 | Java Programmer
          這個(gè)東西實(shí)在是太簡(jiǎn)單了,網(wǎng)上到處都是,所謂的annotation與xml也并沒(méi)有理念、本質(zhì)上的區(qū)別,還是來(lái)點(diǎn)項(xiàng)目實(shí)戰(zhàn)內(nèi)容吧,你說(shuō)的這些東西項(xiàng)目中完全用不上  回復(fù)  更多評(píng)論
            
          # re: 基于Annotation的Struts2.0+Hibernate3.3+Spring2.5整合開(kāi)發(fā) (1) 2009-03-23 21:57 | wexl
          想知道原來(lái) Spring中配置的DAO 注入的sessionFactory,怎么用在使用annotation時(shí)注入。  回復(fù)  更多評(píng)論
            
          # re: 基于Annotation的Struts2.0+Hibernate3.3+Spring2.5整合開(kāi)發(fā) (1) 2009-03-23 22:17 | wexl
          @wexl
          搞明白了,使用SimpleHibernateTemplate  回復(fù)  更多評(píng)論
            
          # re: 基于Annotation的Struts2.0+Hibernate3.3+Spring2.5整合開(kāi)發(fā) (1)[未登錄](méi) 2009-03-23 22:20 | haha
          好 期待下集  回復(fù)  更多評(píng)論
            
          # re: 基于Annotation的Struts2.0+Hibernate3.3+Spring2.5整合開(kāi)發(fā) (1) 2009-03-23 23:07 | 28商機(jī)網(wǎng)
          建議樓主你去看下 SpringSide 參考下它的模式  回復(fù)  更多評(píng)論
            
          # re: 基于Annotation的Struts2.0+Hibernate3.3+Spring2.5整合開(kāi)發(fā) (1) 2009-03-23 23:49 | ,,らSummer
          樓主寫(xiě)得很精彩,期待看到你更多的好文。  回復(fù)  更多評(píng)論
            
          # re: 基于Annotation的Struts2.0+Hibernate3.3+Spring2.5整合開(kāi)發(fā) (1) 2009-03-24 08:23 | Kevin.Chiu
          為什么不用struts2.1.6??  回復(fù)  更多評(píng)論
            
          # re: 基于Annotation的Struts2.0+Hibernate3.3+Spring2.5整合開(kāi)發(fā) (1) 2009-03-24 12:08 | 道長(zhǎng)A@ajava.org
          一直以來(lái),我就不喜歡Annotation,它只不過(guò)是掛著羊皮賣(mài)狗肉而已,比狗肉還不好。  回復(fù)  更多評(píng)論
            
          # re: 基于Annotation的Struts2.0+Hibernate3.3+Spring2.5整合開(kāi)發(fā) (1) 2009-03-24 12:09 | 道長(zhǎng)A@ajava.org
          不過(guò),還是很期待后續(xù)文章。  回復(fù)  更多評(píng)論
            
          # re: 基于Annotation的Struts2.0+Hibernate3.3+Spring2.5整合開(kāi)發(fā) (1) 2009-03-24 20:55 | duduli
          之前就聽(tīng)過(guò)hibernate的Annotation很方便。
          可能還沒(méi)適應(yīng)這樣的方式,
          期待后續(xù)。。。  回復(fù)  更多評(píng)論
            
          # re: 基于Annotation的Struts2.0+Hibernate3.3+Spring2.5整合開(kāi)發(fā) (1) 2009-03-28 16:19 | 杯中水
          你不覺(jué)得上面的代碼有些問(wèn)題嗎?
          qq:418805369  回復(fù)  更多評(píng)論
            
          # re: 基于Annotation的Struts2.0+Hibernate3.3+Spring2.5整合開(kāi)發(fā) (1) 2009-03-28 18:13 | kidd
          為什么得用openSession才可以通過(guò)測(cè)試  回復(fù)  更多評(píng)論
            
          # re: 基于Annotation的Struts2.0+Hibernate3.3+Spring2.5整合開(kāi)發(fā) (1)[未登錄](méi) 2009-05-21 00:07 | Alan
          錯(cuò)誤信息:

          SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
          SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
          Initial SessionFactory creation failed.java.lang.NoClassDefFoundError: org/slf4j/impl/StaticLoggerBinder


          大哥指導(dǎo)下!
            回復(fù)  更多評(píng)論
            
          # re: 基于Annotation的Struts2.0+Hibernate3.3+Spring2.5整合開(kāi)發(fā) (1) 2009-05-29 11:06 | None
          @Alan
          少slf4j-log4j12.jar包  回復(fù)  更多評(píng)論
            
          # re: 基于Annotation的Struts2.0+Hibernate3.3+Spring2.5整合開(kāi)發(fā) (1) 2009-05-29 11:07 | None
          @杯中水
          有啥問(wèn)題啊~~說(shuō)說(shuō)撒   回復(fù)  更多評(píng)論
            
          # re: 基于Annotation的Struts2.0+Hibernate3.3+Spring2.5整合開(kāi)發(fā) (1) 2009-05-30 19:45 | None
          注解方式j(luò)dk版本至少1.6  回復(fù)  更多評(píng)論
            
          # re: 基于Annotation的Struts2.0+Hibernate3.3+Spring2.5整合開(kāi)發(fā) (1)[未登錄](méi) 2009-05-31 21:44 | hone
          Caused by: java.lang.IllegalArgumentException: 'sessionFactory' or 'hibernateTemplate' is required  回復(fù)  更多評(píng)論
            
          # re: 基于Annotation的Struts2.0+Hibernate3.3+Spring2.5整合開(kāi)發(fā) (1) 2009-06-05 11:38 | soon
          為什么不寫(xiě)一下它們?nèi)绾握?  回復(fù)  更多評(píng)論
            
          # re: 基于Annotation的Struts2.0+Hibernate3.3+Spring2.5整合開(kāi)發(fā) (1)[未登錄](méi) 2009-08-24 14:01 | xiaoqiang
          我的報(bào)java.lang.NoClassDefFoundError: org/hibernate/event/PostCollectionRecreateEventListener 實(shí)在不知道是啥原因  回復(fù)  更多評(píng)論
            
          # re: 基于Annotation的Struts2.0+Hibernate3.3+Spring2.5整合開(kāi)發(fā) (1) 2010-01-05 13:55 | tencher
          一個(gè)空的工程按照你說(shuō)的做,
          把hibernate.cfg.xml文件做成后放到src下,
          編譯后,啟動(dòng)tomcat
          什么也沒(méi)有自動(dòng)生成,
          請(qǐng)指教。  回復(fù)  更多評(píng)論
            
          # re: 基于Annotation的Struts2.0+Hibernate3.3+Spring2.5整合開(kāi)發(fā) (1) 2010-01-22 15:58 | Apache's___Tomcat
          web.xml要做什么配置嗎,我運(yùn)行之后根本未對(duì)數(shù)據(jù)庫(kù)作什么動(dòng)作  回復(fù)  更多評(píng)論
            
          # re: 基于Annotation的Struts2.0+Hibernate3.3+Spring2.5整合開(kāi)發(fā) (1) 2010-01-24 14:57 | rongxh7
          @Apache's___Tomcat
          在web.xml中配置spring,而在spring的配置文件中配置Hibernate,具體的配置內(nèi)容,你參考一下網(wǎng)上的文章,我現(xiàn)在不在自己電腦上,暫不能把代碼貼出來(lái),請(qǐng)見(jiàn)諒!  回復(fù)  更多評(píng)論
            
          # re: 基于Annotation的Struts2.0+Hibernate3.3+Spring2.5整合開(kāi)發(fā) (1) 2010-01-24 14:59 | rongxh7
          @tencher
          你還應(yīng)該在Spring的配置文件中配置上hibernate,在web.xml中配置上spring,當(dāng)服務(wù)器運(yùn)行時(shí),會(huì)從spring容器識(shí)別出hibernate。  回復(fù)  更多評(píng)論
            
          # re: 基于Annotation的Struts2.0+Hibernate3.3+Spring2.5整合開(kāi)發(fā) (1) 2010-01-27 20:12 | laihais
          好像不是很行,樓主可以發(fā)份源碼來(lái)嗎?謝謝。Mail:461455263@qq.com  回復(fù)  更多評(píng)論
            
          # re: 基于Annotation的Struts2.0+Hibernate3.3+Spring2.5整合開(kāi)發(fā) (1) 2010-02-02 09:06 | jack-xia
          樓主能發(fā)一份源碼我好嗎?想深入?yún)⒖家幌?!謝謝了~~~
          Mail:xxf880324@163.com
          萬(wàn)分感謝,你為我們新手做的一切!!!  回復(fù)  更多評(píng)論
            
          # re: 基于Annotation的Struts2.0+Hibernate3.3+Spring2.5整合開(kāi)發(fā) (1)[未登錄](méi) 2010-03-11 16:48 | flying
          寫(xiě)的相當(dāng)?shù)牟诲e(cuò)   回復(fù)  更多評(píng)論
            
          # re: 基于Annotation的Struts2.0+Hibernate3.3+Spring2.5整合開(kāi)發(fā) (1) 2010-03-14 22:29 | samir
          樓主費(fèi)心了,寫(xiě)的真不錯(cuò),謝謝分享~~  回復(fù)  更多評(píng)論
            
          # re: 基于Annotation的Struts2.0+Hibernate3.3+Spring2.5整合開(kāi)發(fā) (1)[未登錄](méi) 2010-03-20 22:09 | tianya
          樓主,也給我一份源碼吧!謝謝tianya0506102@163.com  回復(fù)  更多評(píng)論
            
          # re: 基于Annotation的Struts2.0+Hibernate3.3+Spring2.5整合開(kāi)發(fā) (1) 2010-06-04 10:28 | Mac Hotesion
          樓主寫(xiě)的不錯(cuò),辛苦了。
          我遇到了下面兩個(gè)問(wèn)題:
          1. 樓主實(shí)體類(lèi)User用的javax.persistence.Entity;.....是哪一個(gè)包的?
          我目前用的是:ejb3-persistence.jar,看了你的文章一直沒(méi)有提到ejb3-persistence.jar,難道你用的是另外一個(gè)包嗎?
          我的不用這個(gè)包會(huì)報(bào)錯(cuò)。

          2. 你的Action中用的javax.annotation.Resource用的是哪一個(gè)包的?是不是javaee.jar包?①如果是的話,就和ejb3-persistence.jar包發(fā)生了沖突,這兩個(gè)包中都有javax.persistence.Entity;........②如果不是的話,你用的是哪個(gè)包?

          3. 是否也給我一份源碼吧!謝謝 houtingsong163@163.com   回復(fù)  更多評(píng)論
            
          # re: 基于Annotation的Struts2.0+Hibernate3.3+Spring2.5整合開(kāi)發(fā) (1) 2010-08-02 17:15 | tt
          我查詢(xún) 有異常 怎么回事額
          java.lang.reflect.UndeclaredThrowableException
          at $Proxy10.createQuery(Unknown Source)
          at test.rong.hibernate.EntityTest.testQuery(EntityTest.java:32)
          at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
          at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
          at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
          at java.lang.reflect.Method.invoke(Method.java:597)
          at org.junit.internal.runners.TestMethod.invoke(TestMethod.java:59)
          at org.junit.internal.runners.MethodRoadie.runTestMethod(MethodRoadie.java:98)
          at org.junit.internal.runners.MethodRoadie$2.run(MethodRoadie.java:79)
          at org.junit.internal.runners.MethodRoadie.runBeforesThenTestThenAfters(MethodRoadie.java:87)
          at org.junit.internal.runners.MethodRoadie.runTest(MethodRoadie.java:77)
          at org.junit.internal.runners.MethodRoadie.run(MethodRoadie.java:42)
          at org.junit.internal.runners.JUnit4ClassRunner.invokeTestMethod(JUnit4ClassRunner.java:88)
          at org.junit.internal.runners.JUnit4ClassRunner.runMethods(JUnit4ClassRunner.java:51)
          at org.junit.internal.runners.JUnit4ClassRunner$1.run(JUnit4ClassRunner.java:44)
          at org.junit.internal.runners.ClassRoadie.runUnprotected(ClassRoadie.java:27)
          at org.junit.internal.runners.ClassRoadie.runProtected(ClassRoadie.java:37)
          at org.junit.internal.runners.JUnit4ClassRunner.run(JUnit4ClassRunner.java:42)
          at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:38)
          at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
          at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460)
          at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673)
          at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386)
          at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)
          Caused by: java.lang.reflect.InvocationTargetException
          at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
          at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
          at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
          at java.lang.reflect.Method.invoke(Method.java:597)
          at org.hibernate.context.ThreadLocalSessionContext$TransactionProtectionWrapper.invoke(ThreadLocalSessionContext.java:342)
          ... 24 more
          Caused by: java.lang.NoClassDefFoundError: antlr/ANTLRException
          at org.hibernate.hql.ast.ASTQueryTranslatorFactory.createQueryTranslator(ASTQueryTranslatorFactory.java:58)
          at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:98)
          at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:80)
          at org.hibernate.engine.query.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:94)
          at org.hibernate.impl.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:156)
          at org.hibernate.impl.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:135)
          at org.hibernate.impl.SessionImpl.createQuery(SessionImpl.java:1650)
          ... 29 more

            回復(fù)  更多評(píng)論
            
          # re: 基于Annotation的Struts2.0+Hibernate3.3+Spring2.5整合開(kāi)發(fā) (1) 2010-08-02 17:17 | tt
          oh 好了。少了個(gè)jar包 antlr/ANTLRException  回復(fù)  更多評(píng)論
            
          # re: 基于Annotation的Struts2.0+Hibernate3.3+Spring2.5整合開(kāi)發(fā) (1) 2010-09-07 17:17 | sunlongfei_001@126.com
          寫(xiě)的很好,建議大家慢慢的仿照例題運(yùn)行。  回復(fù)  更多評(píng)論
            
          # re: 基于Annotation的Struts2.0+Hibernate3.3+Spring2.5整合開(kāi)發(fā) (1) 2011-02-11 15:40 | zheyiw
          照著做的報(bào)錯(cuò):
          java.lang.NoClassDefFoundError: org/hibernate/loader/custom/SQLQueryReturn  回復(fù)  更多評(píng)論
            
          # re: 基于Annotation的Struts2.0+Hibernate3.3+Spring2.5整合開(kāi)發(fā) (1) 2011-02-25 11:51 | neal
          今天閑來(lái)無(wú)事弄里一下,不過(guò)是oracle下,直接啟動(dòng)tomcat 沒(méi)有生成tb_user,而是運(yùn)行測(cè)試類(lèi)時(shí)生成的  回復(fù)  更多評(píng)論
            
          # re: 基于Annotation的Struts2.0+Hibernate3.3+Spring2.5整合開(kāi)發(fā) (1) 2011-08-18 16:58 | Mara
          版本問(wèn)題很多啊,剛開(kāi)始用的是hibernate3.6,出現(xiàn)不少問(wèn)題,hibernate_cfg.xml配置文件不對(duì),找不到Entity,提示少類(lèi)。后來(lái)下了3.31才通過(guò)。。。。  回復(fù)  更多評(píng)論
            
          # re: 基于Annotation的Struts2.0+Hibernate3.3+Spring2.5整合開(kāi)發(fā) (1) 2011-10-30 17:41 | dmcpxy
          沒(méi)有提到 Spring的啊?  回復(fù)  更多評(píng)論
            
          # re: 基于Annotation的Struts2.0+Hibernate3.3+Spring2.5整合開(kāi)發(fā) (1)[未登錄](méi) 2012-09-14 11:38 | silver
          你只是很簡(jiǎn)單的講了 hibernate annotations 和 struts, spring 毫無(wú)瓜葛  回復(fù)  更多評(píng)論
            
          主站蜘蛛池模板: 邵东县| 枣强县| 普宁市| 尉氏县| 沐川县| 三原县| 延庆县| 扎兰屯市| 怀远县| 东台市| 灵石县| 玛曲县| 福建省| 西城区| 宜兰县| 黎川县| 新竹市| 扬州市| 綦江县| 扎兰屯市| 怀远县| 武城县| 吉木乃县| 洪泽县| 西充县| 美姑县| 和田市| 车致| 正宁县| 丁青县| 理塘县| 莒南县| 井冈山市| 永修县| 乌海市| 宜君县| 泉州市| 邳州市| 柯坪县| 苍南县| 长武县|