java - hibernate lazy init not lazy at all! -


i have entity has collection 1 of attributes. collection mapped @manytomany annotation fetch type lazy. target entity has collections attributes, @onetomany , @manytomany. when fetching first entity (via entitymanager.find(id)) collection attribute populated , furthermore elements of collection populated (i.e. collections filled) many canonicalized objects. understand describing attribute lazy fetched should prevent collection being filled. wrong or doing wrong?

thank you.

the entities (only 2 here example):

@entity @table(name="buys") @xstreamalias("buy") public class buy implements serializable {      /**      *       */     private static final long serialversionuid = 1l;      public enum automode {auto, manual};     public enum bool {false,true};     public enum frequency {freq1, freq2};     public enum status {status1, status2};      @id     @generatedvalue(strategy = generationtype.auto)     @xstreamasattribute     @column(name = "id")     private long id;      /*     @joincolumn(name="agency_id")     @xstreamalias("agencyid")     @manytoone(fetch = fetchtype.lazy, cascade = {cascadetype.persist, cascadetype.merge})     private agency agencyid;     */      @column(name = "agency_id")     @xstreamalias("agencyid")     private long agencyid;      @column(name = "auction_date")     @temporal(temporaltype.date)     @xstreamalias("auction")     private date auctiondate;      @column(name = "pre_auction_date")     @temporal(temporaltype.date)     @xstreamalias("pre-auction")     private date preauctiondate;      @column(name = "send_feedback_auto_mode")     @xstreamalias("auto-send")     @enumerated(enumtype.ordinal)     private automode sendfeedbackautomode;      @column(name = "campaign_budget")     @xstreamalias("budget")     private integer budget;      @column(name = "price_ceiling")     @xstreamalias("price-ceiling")     @min(value = 1, message = "price ceiling should greater 0")     private double priceceiling;      /*     @manytoone( cascade = {cascadetype.persist, cascadetype.merge})     @joincolumn(name="campaign_id")     private campaign campaign;     */      @column(name = "campaign_id")     @xstreamalias("campaignid")     private long campaign;      @column(name = "avg_bid_received")     @xstreamalias("avgbigreceived")     private double avgbid;      @column(name = "maximum_unique_users")     @xstreamalias("maxuniqueusers")     private int maxuniqueusers;      @column(name = "optimize_method")     @xstreamalias("optimzemethod")     private int optimzemethod;      @column(name = "frequency")     @xstreamalias("frequency")     private int frequency;      @column(name = "frequency_type")     @xstreamalias("frequency_type")     @enumerated(enumtype.ordinal)     private frequency frequencytype;      @column(name = "additional_info")     @xstreamalias("additionalinfo")     private string additionalinfo;      @column(name = "support_oob")     @xstreamalias("oob")     @enumerated(enumtype.ordinal)     private bool supportoob;      @column(name = "support_in_banner")     @xstreamalias("ib")     @enumerated(enumtype.ordinal)     private bool supportib;      @column(name = "status")     @xstreamalias("status")     @enumerated(enumtype.ordinal)     private status status;      @version     @column(name = "version")     @xstreamasattribute     private integer version;      @manytomany(fetch=fetchtype.lazy,cascade = { cascadetype.merge, cascadetype.persist})     @jointable( name="buy_ad_sizes", joincolumns=@joincolumn(name="buy_id"),inversejoincolumns=@joincolumn(name="ad_size_id"))     @xstreamalias("adsizes")     private list<adunit> adsizes;      @manytomany(fetch=fetchtype.lazy,cascade = { cascadetype.merge, cascadetype.persist})     @jointable( name="buy_profiles", joincolumns=@joincolumn(name="buy_id"),inversejoincolumns=@joincolumn(name="profile_id"))     @xstreamalias("profiles")     private list<profile> profiles;      @joincolumn(name="buy_id")     @onetomany(fetch=fetchtype.lazy,cascade = { cascadetype.merge, cascadetype.persist})     @xstreamalias("mediaplans")     private list<mediaplan> mediaplans;      @joincolumn(name = "buy_id")     @onetomany(fetch=fetchtype.lazy,cascade = { cascadetype.merge, cascadetype.persist})     @xstreamalias("publisherproposals")     private list<publisherproposal> publisherproposals;      public long getid() {         return id;     }      public void setid(long id) {         this.id = id;     }      public integer getversion() {         return version;     }      public void setversion(integer version) {         this.version = version;     }      public date getauctiondate() {         return auctiondate;     }      public void  setauctiondate(date auctiondate) {          this.auctiondate = auctiondate;     }      public date getpreauctiondate() {         return preauctiondate;     }      public void  setpreauctiondate(date preauctiondate) {          this.preauctiondate = preauctiondate;     }      public integer getbudget() {         return budget;     }      public void setbudget(integer budget) {         this.budget = budget;     }      public double getpriceceiling() {         return priceceiling;     }      public void setpriceceiling(double priceceiling) {         this.priceceiling = priceceiling;     }      public automode getsendfeedbackautomode() {         return sendfeedbackautomode;     }      public void setsendfeedbackautomode(automode sendfeedbackautomode) {         this.sendfeedbackautomode = sendfeedbackautomode;     }      public double getavgbid() {         return avgbid;     }      public void setavgbid(double avgbid) {         this.avgbid = avgbid;     }      public int getmaxuniqueusers() {         return maxuniqueusers;     }      public void setmaxuniqueusers(int maxuniqueusers) {         this.maxuniqueusers = maxuniqueusers;     }      public int getoptimzemethod() {         return optimzemethod;     }      public void setoptimzemethod(int optimzemethod) {         this.optimzemethod = optimzemethod;     }      public int getfrequency() {         return frequency;     }      public void setfrequency(int frequency) {         this.frequency = frequency;     }      public frequency getfrequencytype() {         return frequencytype;     }      public void setfrequencytype(frequency frequencytype) {         this.frequencytype = frequencytype;     }      public string getadditionalinfo() {         return additionalinfo;     }      public void setadditionalinfo(string additionalinfo) {         this.additionalinfo = additionalinfo;     }      public bool getsupportoob() {         return supportoob;     }      public list<adunit> getadsizes() {         return adsizes;     }      public void setadsizes(list<adunit> adsizes) {         this.adsizes = adsizes;     }      public void setsupportoob(bool supportoob) {         this.supportoob = supportoob;     }      public bool getsupportib() {         return supportib;     }      public void setsupportib(bool supportib) {         this.supportib = supportib;     }      public status getstatus() {         return status;     }      public void setstatus(status status) {         this.status = status;     }      public list<profile> getprofiles() {         return profiles;     }      public void setprofiles(list<profile> profiles) {         this.profiles = profiles;     }      public list<mediaplan> getmediaplans() {         return mediaplans;     }      public void setmediaplans(list<mediaplan> mediaplans) {         this.mediaplans = mediaplans;     }      public list<publisherproposal> getpublisherproposals() {         return publisherproposals;     }      public void setpublisherproposals(list<publisherproposal> publisherproposals) {         this.publisherproposals = publisherproposals;     }      public long getagencyid() {         return agencyid;     }      public void setagencyid(long agencyid) {         this.agencyid = agencyid;     }      public long getcampaign() {         return campaign;     }      public void setcampaign(long campaign) {         this.campaign = campaign;     }    } 

second entity:

@entity @table(name = "ad_units") @xstreamalias("adunit") public class adunit {      @id     @generatedvalue(strategy = generationtype.auto)     @column(name = "id")     @xstreamasattribute     private long id;      @column(unique=true, nullable=false )     @xstreamasattribute     private string name;      @column(name="full_name",nullable=false )     @xstreamalias("full-name")     private string fullname;      @xstreamalias("width")     private integer width;      @xstreamalias("height")     private integer height;      @xstreamalias("type")     private string type;      @manytomany(fetch = fetchtype.lazy, cascade = {cascadetype.persist, cascadetype.merge}, mappedby = "adsizes", targetentity = publisher.class)     private list<publisher> publishers;      public long getid() {         return id;     }      public void setid(long id) {         this.id = id;     }      public string getname() {         return name;     }      public void setname(string name) {         this.name = name;     }      public string getfullname() {         return fullname;     }      public void setfullname(string fullname) {         this.fullname = fullname;     }      public integer getwidth() {         return width;     }      public void setwidth(integer width) {         this.width = width;     }      public integer getheight() {         return height;     }      public void setheight(integer height) {         this.height = height;     }      public string gettype() {         return type;     }      public void settype(string type) {         this.type = type;     }      public list<publisher> getpublishers() {         return publishers;     }      public void setpublishers(list<publisher> publishers) {         this.publishers = publishers;     } } 

the returned object:

<buy id="1" version="0">   <agencyid>1</agencyid>   <auction class="sql-date">2010-09-25</auction>   <pre-auction class="sql-date">2010-09-25</pre-auction>   <auto-send>auto</auto-send>   <budget>1000</budget>   <price-ceiling>5.0</price-ceiling>   <campaignid>0</campaignid>   <avgbigreceived>5.5</avgbigreceived>   <maxuniqueusers>7</maxuniqueusers>   <optimzemethod>3</optimzemethod>   <frequency>0</frequency>   <frequency__type>freq1</frequency__type>   <additionalinfo>none</additionalinfo>   <oob>true</oob>   <ib>false</ib>   <status>status1</status>   <adsizes>     <adunit id="1" name="300x250">       <full-name>300 x 250 imu - (medium rectangle)</full-name>       <width>300</width>       <height>250</height>       <type>popups &amp; rectangles</type>       <publishers>         <publisher id="2">           <name>publisher2</name>           <profiles/>           <proposals>             <proposal id="0" version="0">               <publisherid>2</publisherid>               <buyid>1</buyid>               <creationdate class="sql-date">2010-11-11</creationdate>               <lastupdated class="sql-date">2010-11-11</lastupdated>               <cpm>5.0</cpm>               <minimumspend>100</minimumspend>               <info>none</info>               <revealusers>false</revealusers>               <status>status1</status>               <mediaplanproposals/>             </proposal>           </proposals>           <adsizes>             <adunit reference="../../../.."/>             <adunit id="3" name="240x400">               <full-name>240 x 400 imu - (vertical rectangle)</full-name>               <width>240</width>               <height>240</height>               <type>popups &amp; rectangles</type>               <publishers>                 <publisher reference="../../../.."/>               </publishers>             </adunit>           </adsizes>         </publisher>       </publishers>     </adunit>   </adsizes>   <profiles/>   <mediaplans/>   <publisherproposals>     <proposal reference="../../adsizes/adunit/publishers/publisher/proposals/proposal"/>   </publisherproposals> </buy> 

as can see object contains collection defined lazy fetched , furthermore collections inside collections fetched.

the debug output queries:

[http-8080-1] debug org.hibernate.sql - select buy0_.id id0_0_, buy0_.additional_info additional2_0_0_, buy0_.agency_id agency3_0_0_, buy0_.auction_date auction4_0_0_, buy0_.avg_bid_received avg5_0_0_, buy0_.campaign_budget campaign6_0_0_, buy0_.campaign_id campaign7_0_0_, buy0_.frequency frequency0_0_, buy0_.frequency_type frequency9_0_0_, buy0_.maximum_unique_users maximum10_0_0_, buy0_.optimize_method optimize11_0_0_, buy0_.pre_auction_date pre12_0_0_, buy0_.price_ceiling price13_0_0_, buy0_.send_feedback_auto_mode send14_0_0_, buy0_.status status0_0_, buy0_.support_in_banner support16_0_0_, buy0_.support_oob support17_0_0_, buy0_.version version0_0_ buys buy0_ buy0_.id=? hibernate: select buy0_.id id0_0_, buy0_.additional_info additional2_0_0_, buy0_.agency_id agency3_0_0_, buy0_.auction_date auction4_0_0_, buy0_.avg_bid_received avg5_0_0_, buy0_.campaign_budget campaign6_0_0_, buy0_.campaign_id campaign7_0_0_, buy0_.frequency frequency0_0_, buy0_.frequency_type frequency9_0_0_, buy0_.maximum_unique_users maximum10_0_0_, buy0_.optimize_method optimize11_0_0_, buy0_.pre_auction_date pre12_0_0_, buy0_.price_ceiling price13_0_0_, buy0_.send_feedback_auto_mode send14_0_0_, buy0_.status status0_0_, buy0_.support_in_banner support16_0_0_, buy0_.support_oob support17_0_0_, buy0_.version version0_0_ buys buy0_ buy0_.id=?  [http-8080-1] debug org.hibernate.pretty.printer - com.legolas.model.buy{budget=1000, supportib=0, avgbid=5.5, status=0, priceceiling=5.0, maxuniqueusers=7, optimzemethod=3, frequency=0, additionalinfo=none, agencyid=1, frequencytype=0, version=0, sendfeedbackautomode=0, id=1, mediaplans=<uninitialized>, adsizes=<uninitialized>, profiles=<uninitialized>, campaign=0, supportoob=1, publisherproposals=<uninitialized>, preauctiondate=25  september 2010, auctiondate=25  september 2010}  [http-8080-1] debug org.hibernate.sql - select adsizes0_.buy_id buy1_1_, adsizes0_.ad_size_id ad2_1_, adunit1_.id id1_0_, adunit1_.full_name full2_1_0_, adunit1_.height height1_0_, adunit1_.name name1_0_, adunit1_.type type1_0_, adunit1_.width width1_0_ buy_ad_sizes adsizes0_ left outer join ad_units adunit1_ on adsizes0_.ad_size_id=adunit1_.id adsizes0_.buy_id=? hibernate: select adsizes0_.buy_id buy1_1_, adsizes0_.ad_size_id ad2_1_, adunit1_.id id1_0_, adunit1_.full_name full2_1_0_, adunit1_.height height1_0_, adunit1_.name name1_0_, adunit1_.type type1_0_, adunit1_.width width1_0_ buy_ad_sizes adsizes0_ left outer join ad_units adunit1_ on adsizes0_.ad_size_id=adunit1_.id adsizes0_.buy_id=?  [http-8080-1] debug org.hibernate.sql - select publishers0_.adsize_id adsize2_1_, publishers0_.publisher_id publisher1_1_, publisher1_.publisher_id id5_0_, publisher1_1_.name name5_0_, publisher1_.name name14_0_ publishers_adsizes publishers0_ left outer join publishers publisher1_ on publishers0_.publisher_id=publisher1_.publisher_id left outer join accounts publisher1_1_ on publisher1_.publisher_id=publisher1_1_.id publishers0_.adsize_id=? hibernate: select publishers0_.adsize_id adsize2_1_, publishers0_.publisher_id publisher1_1_, publisher1_.publisher_id id5_0_, publisher1_1_.name name5_0_, publisher1_.name name14_0_ publishers_adsizes publishers0_ left outer join publishers publisher1_ on publishers0_.publisher_id=publisher1_.publisher_id left outer join accounts publisher1_1_ on publisher1_.publisher_id=publisher1_1_.id publishers0_.adsize_id=?  [http-8080-1] debug org.hibernate.sql - select profiles0_.publisher_id publisher3_1_, profiles0_.id id1_, profiles0_.id id9_0_, profiles0_.profile_id profile2_9_0_, profiles0_.publisher_id publisher3_9_0_, profiles0_.reach reach9_0_, profiles0_.stamped stamped9_0_, profiles0_.targeting_name targeting6_9_0_, profiles0_.users_on_site users7_9_0_ publisher_profiles profiles0_ profiles0_.publisher_id=? hibernate: select profiles0_.publisher_id publisher3_1_, profiles0_.id id1_, profiles0_.id id9_0_, profiles0_.profile_id profile2_9_0_, profiles0_.publisher_id publisher3_9_0_, profiles0_.reach reach9_0_, profiles0_.stamped stamped9_0_, profiles0_.targeting_name targeting6_9_0_, profiles0_.users_on_site users7_9_0_ publisher_profiles profiles0_ profiles0_.publisher_id=?  [http-8080-1] debug org.hibernate.sql - select proposals0_.publisher_id publisher9_1_, proposals0_.id id1_, proposals0_.id id4_0_, proposals0_.additional_info additional2_4_0_, proposals0_.buy_id buy3_4_0_, proposals0_.cpm cpm4_0_, proposals0_.creation_date creation5_4_0_, proposals0_.last_updated last6_4_0_, proposals0_.minimum_spend minimum7_4_0_, proposals0_.proposal_status proposal8_4_0_, proposals0_.publisher_id publisher9_4_0_, proposals0_.reveal_num_of_users reveal10_4_0_, proposals0_.version version4_0_ publishers_proposals proposals0_ proposals0_.publisher_id=? hibernate: select proposals0_.publisher_id publisher9_1_, proposals0_.id id1_, proposals0_.id id4_0_, proposals0_.additional_info additional2_4_0_, proposals0_.buy_id buy3_4_0_, proposals0_.cpm cpm4_0_, proposals0_.creation_date creation5_4_0_, proposals0_.last_updated last6_4_0_, proposals0_.minimum_spend minimum7_4_0_, proposals0_.proposal_status proposal8_4_0_, proposals0_.publisher_id publisher9_4_0_, proposals0_.reveal_num_of_users reveal10_4_0_, proposals0_.version version4_0_ publishers_proposals proposals0_ proposals0_.publisher_id=?  [http-8080-1] debug org.hibernate.sql - select mpproposal0_.proposal_id proposal9_1_, mpproposal0_.id id1_, mpproposal0_.id id2_0_, mpproposal0_.budget budget2_0_, mpproposal0_.comments comments2_0_, mpproposal0_.cpm cpm2_0_, mpproposal0_.exclusive_reach exclusive5_2_0_, mpproposal0_.frequency_cap frequency6_2_0_, mpproposal0_.impressions impressi7_2_0_, mpproposal0_.mediaplan_id mediaplan8_2_0_, mpproposal0_.proposal_id proposal9_2_0_, mpproposal0_.reach reach2_0_ mediaplan_proposals mpproposal0_ mpproposal0_.proposal_id=? hibernate: select mpproposal0_.proposal_id proposal9_1_, mpproposal0_.id id1_, mpproposal0_.id id2_0_, mpproposal0_.budget budget2_0_, mpproposal0_.comments comments2_0_, mpproposal0_.cpm cpm2_0_, mpproposal0_.exclusive_reach exclusive5_2_0_, mpproposal0_.frequency_cap frequency6_2_0_, mpproposal0_.impressions impressi7_2_0_, mpproposal0_.mediaplan_id mediaplan8_2_0_, mpproposal0_.proposal_id proposal9_2_0_, mpproposal0_.reach reach2_0_ mediaplan_proposals mpproposal0_ mpproposal0_.proposal_id=?  [http-8080-1] debug org.hibernate.sql - select adsizes0_.publisher_id publisher1_1_, adsizes0_.adsize_id adsize2_1_, adunit1_.id id1_0_, adunit1_.full_name full2_1_0_, adunit1_.height height1_0_, adunit1_.name name1_0_, adunit1_.type type1_0_, adunit1_.width width1_0_ publishers_adsizes adsizes0_ left outer join ad_units adunit1_ on adsizes0_.adsize_id=adunit1_.id adsizes0_.publisher_id=? hibernate: select adsizes0_.publisher_id publisher1_1_, adsizes0_.adsize_id adsize2_1_, adunit1_.id id1_0_, adunit1_.full_name full2_1_0_, adunit1_.height height1_0_, adunit1_.name name1_0_, adunit1_.type type1_0_, adunit1_.width width1_0_ publishers_adsizes adsizes0_ left outer join ad_units adunit1_ on adsizes0_.adsize_id=adunit1_.id adsizes0_.publisher_id=?  [http-8080-1] debug org.hibernate.sql - select publishers0_.adsize_id adsize2_1_, publishers0_.publisher_id publisher1_1_, publisher1_.publisher_id id5_0_, publisher1_1_.name name5_0_, publisher1_.name name14_0_ publishers_adsizes publishers0_ left outer join publishers publisher1_ on publishers0_.publisher_id=publisher1_.publisher_id left outer join accounts publisher1_1_ on publisher1_.publisher_id=publisher1_1_.id publishers0_.adsize_id=? hibernate: select publishers0_.adsize_id adsize2_1_, publishers0_.publisher_id publisher1_1_, publisher1_.publisher_id id5_0_, publisher1_1_.name name5_0_, publisher1_.name name14_0_ publishers_adsizes publishers0_ left outer join publishers publisher1_ on publishers0_.publisher_id=publisher1_.publisher_id left outer join accounts publisher1_1_ on publisher1_.publisher_id=publisher1_1_.id publishers0_.adsize_id=?  [http-8080-1] debug org.hibernate.sql - select profiles0_.buy_id buy1_1_, profiles0_.profile_id profile2_1_, profile1_.id id12_0_, profile1_.agency_id agency2_12_0_, profile1_.name name12_0_ buy_profiles profiles0_ left outer join profiles profile1_ on profiles0_.profile_id=profile1_.id profiles0_.buy_id=? hibernate: select profiles0_.buy_id buy1_1_, profiles0_.profile_id profile2_1_, profile1_.id id12_0_, profile1_.agency_id agency2_12_0_, profile1_.name name12_0_ buy_profiles profiles0_ left outer join profiles profile1_ on profiles0_.profile_id=profile1_.id profiles0_.buy_id=?    [http-8080-1] debug org.hibernate.sql - select mediaplans0_.buy_id buy2_1_, mediaplans0_.id id1_, mediaplans0_.id id11_0_, mediaplans0_.buy_id buy2_11_0_, mediaplans0_.is_final is3_11_0_ mediaplans mediaplans0_ mediaplans0_.buy_id=? hibernate: select mediaplans0_.buy_id buy2_1_, mediaplans0_.id id1_, mediaplans0_.id id11_0_, mediaplans0_.buy_id buy2_11_0_, mediaplans0_.is_final is3_11_0_ mediaplans mediaplans0_ mediaplans0_.buy_id=?  [http-8080-1] debug org.hibernate.sql - select publisherp0_.buy_id buy3_1_, publisherp0_.id id1_, publisherp0_.id id4_0_, publisherp0_.additional_info additional2_4_0_, publisherp0_.buy_id buy3_4_0_, publisherp0_.cpm cpm4_0_, publisherp0_.creation_date creation5_4_0_, publisherp0_.last_updated last6_4_0_, publisherp0_.minimum_spend minimum7_4_0_, publisherp0_.proposal_status proposal8_4_0_, publisherp0_.publisher_id publisher9_4_0_, publisherp0_.reveal_num_of_users reveal10_4_0_, publisherp0_.version version4_0_ publishers_proposals publisherp0_ publisherp0_.buy_id=? hibernate: select publisherp0_.buy_id buy3_1_, publisherp0_.id id1_, publisherp0_.id id4_0_, publisherp0_.additional_info additional2_4_0_, publisherp0_.buy_id buy3_4_0_, publisherp0_.cpm cpm4_0_, publisherp0_.creation_date creation5_4_0_, publisherp0_.last_updated last6_4_0_, publisherp0_.minimum_spend minimum7_4_0_, publisherp0_.proposal_status proposal8_4_0_, publisherp0_.publisher_id publisher9_4_0_, publisherp0_.reveal_num_of_users reveal10_4_0_, publisherp0_.version version4_0_ publishers_proposals publisherp0_ publisherp0_.buy_id=? 

posting comment answer: i wonder if not side effect of xml serialization. can confirm occurs when no xml serialization involved?


Comments

Popular posts from this blog

c++ - Convert big endian to little endian when reading from a binary file -

C#: Application without a window or taskbar item (background app) that can still use Console.WriteLine() -

unicode - Are email addresses allowed to contain non-alphanumeric characters? -