2011-01-16 5 views
0

私は習熟していて、ナッツとbolts.iを学習しようとしましたが、目的地テーブルに一意のキーとしてUIDを持っています。私は、ユーザがdestinationidに基づいて目的地を取得することができる方法を提供する はまた、私は)(HQLを使用してオブジェクトを取得中に問題が発生しました。

Session session=getSessionFactory().getCurrentSession(); 
     Destination destination=null; 
     String queryString="from Destination destination "+ 
          "where destination.destinationID = :destinationid"; 
     Query query= session.createQuery(queryString).setParameter("destinationid", destinationId, Hibernate.STRING); 
     @SuppressWarnings("unchecked") 
     List<Destination> list=qu 

ery.list以下のようHQLを使用しようとしました。

私の先のクラスはすべて、遅延ロードされDesttinationクラス内からrefredされているwhcih周り9-10クラスがある怠惰な負荷として定義されているすべてのそれらのコレクションなど、多くの他のサブクラス

<set name="roadTransport" table="ROADTRANSPORT" inverse="true" lazy="true" cascade="save-update"> 

のrefrenceを持っています。

私は宛先xmlをインポートしています。このxmlは第三者システムによって提供されていますので、UUIDを関連付けることはできません。また、インポートを更新モードで行うのか、新しいdestination.soのdestinationidを行うのかを決定する必要があります。宛先が既にDBに入っているかどうかを確認するための唯一の方法です。

私の問題は、新たな目的地のために上記のHQLクエリが細かいと新しい宛先がDBにではなく、既存の期待通りのが動作していないようだと、クエリが絞首刑状態で

であるように思わために輸入されている作業しているされて

 Hibernate: 
      /* 
     from 
      Destination destination 
     where 
      destination.destinationID = :destinationid */ select 
       destinatio0_.UUID as UUID0_, 
       destinatio0_.DESTINATIONID as DESTINAT2_0_, 
       destinatio0_.NAME as NAME0_, 
       destinatio0_.SHORTDESCRIPTION as SHORTDES4_0_, 
       destinatio0_.LONGDESCRIPTION as LONGDESC5_0_, 
       destinatio0_.IMAGE as IMAGE0_, 
       destinatio0_.GALLERYPATH as GALLERYP7_0_, 
       destinatio0_.RATING as RATING0_, 
       destinatio0_.LASTMODIFIED as LASTMODI9_0_, 
       destinatio0_.CREATIONDATE as CREATIO10_0_, 
       destinatio0_.STATEID as STATEID0_, 
       destinatio0_.TYPECODE as TYPECODE0_, 
       destinatio0_.COUNTRYCODE as COUNTRY13_0_, 
       destinatio0_.POPULARITY as POPULARITY0_ 
      from 
       travellingrants.DESTINATION destinatio0_ 
      where 
       destinatio0_.DESTINATIONID=? 
     Hibernate: 
      /* load com.raisonne.tr.model.destination.destinationattributes.Culture */ select 
       culture0_.UUID as UUID4_2_, 
       culture0_.SHORTDESCRIPTION as SHORTDES2_4_2_, 
       culture0_.LONGDESCRIPTION as LONGDESC3_4_2_, 
       culture0_.CREATIONDATE as CREATION4_4_2_, 
       culture0_.LASTMODIFIED as LASTMODI5_4_2_, 
       destinatio1_.UUID as UUID0_0_, 
       destinatio1_.DESTINATIONID as DESTINAT2_0_0_, 
       destinatio1_.NAME as NAME0_0_, 
       destinatio1_.SHORTDESCRIPTION as SHORTDES4_0_0_, 
       destinatio1_.LONGDESCRIPTION as LONGDESC5_0_0_, 
       destinatio1_.IMAGE as IMAGE0_0_, 
       destinatio1_.GALLERYPATH as GALLERYP7_0_0_, 
       destinatio1_.RATING as RATING0_0_, 
       destinatio1_.LASTMODIFIED as LASTMODI9_0_0_, 
       destinatio1_.CREATIONDATE as CREATIO10_0_0_, 
       destinatio1_.STATEID as STATEID0_0_, 
       destinatio1_.TYPECODE as TYPECODE0_0_, 
       destinatio1_.COUNTRYCODE as COUNTRY13_0_0_, 
       destinatio1_.POPULARITY as POPULARITY0_0_, 
       culture2_.UUID as UUID4_1_, 
       culture2_.SHORTDESCRIPTION as SHORTDES2_4_1_, 
       culture2_.LONGDESCRIPTION as LONGDESC3_4_1_, 
       culture2_.CREATIONDATE as CREATION4_4_1_, 
       culture2_.LASTMODIFIED as LASTMODI5_4_1_ 
      from 
       travellingrants.CULTURE culture0_ 
      left outer join 
       travellingrants.DESTINATION destinatio1_ 
        on culture0_.UUID=destinatio1_.UUID 
      left outer join 
       travellingrants.CULTURE culture2_ 



    on destinatio1_.UUID=culture2_.UUID 
where 
    culture0_.UUID=? 

私は休止状態では新しいですが、すでに存在する宛先に対してhibernateによって生成されたクエリを見た後、何らかの周期的な再帰に直面しているようですが、これを回避する方法がわからないか、ユニークキー(プライマリキーではない)に基づく既存のエンティティの場合

ありがとうadvance

答えて

0

このオプションはinverse = "false" lazy = "false" fetch = "join"を使用してください。問題はlazy = trueです。

関連する問題