解決 Hibernate Annotation 的 "no persistent classes found for query class" 問(wèn)題

          軟件版本:
          hibernate-3.2.0.cr2
          hibernate-annotations-3.2.0.CR1

          IDE:
          idea 5.1

          以前都是用XDoclet來(lái)實(shí)現(xiàn)類似Annotation的功能,但是xdoclet的版本更新實(shí)在太慢,永遠(yuǎn)跟不上hibernate的更新速度,導(dǎo)致很多hibernate新的功能xdoclet都沒(méi)辦法支持.還好,jdk5.0有了Annotation,而且hibernate也開(kāi)始支持Annotation了.

          原來(lái)以為從xdoclet轉(zhuǎn)到Annotation很簡(jiǎn)單,沒(méi)想到還是遇到了問(wèn)題,先看代碼:

          ?1package?test;
          ?2
          ?3import?org.hibernate.annotations.Entity;
          ?4
          ?5import?javax.persistence.Id;
          ?6import?java.io.Serializable;
          ?7
          ?8@Entity
          ?9public?class?Flight?implements?Serializable{
          10??Long?id;
          11??String?name;
          12
          13??@Id
          14??public?Long?getId(){
          15????return?id;
          16??}

          17
          18??public?void?setId(Long?id){
          19????this.id=id;
          20??}

          21
          22??public?String?getName(){
          23????return?name;
          24??}

          25
          26??public?void?setName(String?name){
          27????this.name=name;
          28??}

          29
          30??public?boolean?equals(Object?o){
          31????if(this==o)?return?true;
          32????if(o==null||getClass()!=o.getClass())?return?false;
          33
          34????final?Flight?flight=(Flight)o;
          35
          36????if(id!=null?!id.equals(flight.id):flight.id!=null)?return?false;
          37????if(name!=null?!name.equals(flight.name):flight.name!=null)?return?false;
          38
          39????return?true;
          40??}

          41
          42??public?int?hashCode(){
          43????int?result;
          44????result=(id!=null?id.hashCode():0);
          45????result=29*result+(name!=null?name.hashCode():0);
          46????return?result;
          47??}

          48}

          49


          看上去沒(méi)什么問(wèn)題吧?沒(méi)想到運(yùn)行的時(shí)候根本跑不起來(lái),老是提示:
          ?????[java]?10:54:55,842??INFO?SessionFactoryObjectFactory:82?-?Not?binding?factory?to?JNDI,?no?JNDI?name?configured
          ?????[java]?org.hibernate.hql.ast.QuerySyntaxException:?Flight?is?not?mapped?[from?Flight]
          ?????[java]?????at?org.apache.tools.ant.taskdefs.ExecuteJava.execute(ExecuteJava.java:
          180)
          ?????[java]?????at?org.apache.tools.ant.taskdefs.Java.run(Java.java:
          710)
          ?????[java]?????at?org.apache.tools.ant.taskdefs.Java.executeJava(Java.java:
          178)
          ?????[java]?????at?org.apache.tools.ant.taskdefs.Java.execute(Java.java:
          84)
          ?????[java]?????at?org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:
          275)
          ?????[java]?????at?org.apache.tools.ant.Task.perform(Task.java:
          364)
          ?????[java]?????at?org.apache.tools.ant.Target.execute(Target.java:
          341)
          ?????[java]?????at?org.apache.tools.ant.Target.performTasks(Target.java:
          369)
          ?????[java]?????at?org.apache.tools.ant.Project.executeSortedTargets(Project.java:
          1216)
          ?????[java]?????at?org.apache.tools.ant.Project.executeTarget(Project.java:
          1185)
          ?????[java]?????at?org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:
          40)
          ?????[java]?????at?org.apache.tools.ant.Project.executeTargets(Project.java:
          1068)
          ?????[java]?????at?org.apache.tools.ant.Main.runBuild(Main.java:
          668)
          ?????[java]?????at?org.apache.tools.ant.Main.startAnt(Main.java:
          187)
          ?????[java]?????at?org.apache.tools.ant.launch.Launcher.run(Launcher.java:
          246)
          ?????[java]?????at?org.apache.tools.ant.launch.Launcher.main(Launcher.java:
          67)

          看了半天看不出有什么問(wèn)題,最后終于參考hibernate-annotations-3.2.0.CR1里面單元測(cè)試的代碼才發(fā)現(xiàn)是這段代碼有問(wèn)題:

          1import?org.hibernate.annotations.Entity;
          2
          3import?javax.persistence.Id;
          4import?java.io.Serializable;
          5


          要改成:

          1import?javax.persistence.Id;
          2import?javax.persistence.Entity;
          3import?java.io.Serializable;


          原來(lái)我用idea開(kāi)發(fā)時(shí),在自動(dòng)完成的時(shí)候想當(dāng)然地選用了org.hibernate.annotations包下面的annotation,而實(shí)際上應(yīng)該使用javax.persistence包下面的annotation.想想看也很有道理:這樣一來(lái)我們的JAVA bean就不用import hibernate的包了,用的都是標(biāo)準(zhǔn)的java包.
          posted on 2006-06-30 11:04 一餐三碗 閱讀(7301) 評(píng)論(0)  編輯  收藏 所屬分類: Tips
          主站蜘蛛池模板: 彰化市| 贵溪市| 江源县| 商水县| 青州市| 北辰区| 璧山县| 瑞昌市| 扎兰屯市| 临颍县| 方山县| 齐河县| 工布江达县| 吴堡县| 日土县| 台东县| 香港| 闵行区| 于都县| 安龙县| 治多县| 南澳县| 汝州市| 瑞金市| 永清县| 南木林县| 江陵县| 博兴县| 彩票| 宁阳县| 武邑县| 双峰县| 故城县| 淮阳县| 平武县| 蒙自县| 体育| 手游| 镇宁| 海伦市| 富裕县|