-->
These old forums are deprecated now and set to read-only. We are waiting for you on our new forums!
More modern, Discourse-based and with GitHub/Google/Twitter authentication built-in.

All times are UTC - 5 hours [ DST ]



Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 1 post ] 
Author Message
 Post subject: Lazy Loading / Build-time instrumentation does not work
PostPosted: Thu Oct 15, 2009 8:49 am 
Newbie

Joined: Thu Oct 15, 2009 8:04 am
Posts: 6
Hi everyone,

I'm using Hibernate 3.3.1 (version that comes with JBoss) with annotations. In our application we need lazy loaded properties for large binary objects. Unfortunately I cannot provide an isolated simplified example.

In the persistent class OriginalSubmission the property blob is defined as follows:

Code:
   @Lob
   @Basic(               fetch         = FetchType.LAZY)   // Hibernate book p. 572, bottom!
   @Column(            name          = "bin_data",
                     nullable       = false,
                     unique          = false,
                     insertable      = true,
                     updatable      = true
                     )
   public java.sql.Blob getBlob()
      throws IMException
   {
      return blobM;
   }


According to the Hibernate documentation, build-time byte code instrumentation is required in order to allow for lazily loaded properties. The build steps have been extended correspondingly (InstumentTask) with the consequence that the code is instrumented. However, in practice the property blob now is never really löoaded by Hibernate, even not when directly accessed, rather null is returned instead.
At runtime, Hibernate logs show something like
Quote:
- lazy property fetching available for: com.l1id.......OriginalSubmission

Also, when debugging, class OriginalSubmission contains a field named $CGLIB_READ_WRITE_CALLBACK which seems to implement the field interceptor. It contains a HashMap in which the uninitialized blob property is correctly listed. However it seems that this interceptor is never really called.

I'm completely stuck here after several days of experimenting. I have read the following information:

I have patched hibernate-annotations-3.4.0.GA.jar as described in ANN-782 and tried any conceivable combinations regarding the repackaing issue. Also a lot of documentation seems to be out of date, it is a nightmare. Whatever I do, the interceptor is not called and the lazy-loaded-properties are not populated.

Using another version of Hibernate which could be based on cglib-2.2 is not acceptable because this project relates to JBoss-5.0.0 GA. Even JBoss 5.1.0 GA uses still Hibernate-3.3.1 GA. We need to use this very version.

I conclude, since very few people seem to encounter this situation, that I doing something really wrong, maybe an obvious triviality. I really would appreciate comments or recommendations about this.
  • Can I debug into the interceptor method?
  • What can cause the fact that it is not called at all

Thanks in advance for your help,
-Rainer


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 1 post ] 

All times are UTC - 5 hours [ DST ]


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
© Copyright 2014, Red Hat Inc. All rights reserved. JBoss and Hibernate are registered trademarks and servicemarks of Red Hat, Inc.