I've reported this as a bug at http://bugs.caucho.com/view.php?id=2423.

I don't know off-hand why it's not eagerly fetching.  There are a few  
complications in that piece of the code to deal with circular data  
structures and it's possible one of those are stopping the pre-load in  
this case.

-- Scott

On Feb 8, 2008, at 7:11 PM, Daniel Spangler wrote:

>
> I preface this with the fact that I'm using a snapshot build
> resin-3.1.s080205 because of this bug
> (http://bugs.caucho.com/view.php?id=2282).
>
> Even though I have my OneToMany relationship tagged as EAGER, it  
> appears to
> behave as if it's in LAZY mode.  Here are snippets from my classes.
>
> public class DatabaseQuestionImpl implements Serializable, Question {
>
> ...
>    @OneToMany(mappedBy="parentQuestion", fetch=FetchType.EAGER,  
> cascade =
> CascadeType.ALL)
>    private List<DatabaseOptionImpl> optionsFromDatabase;
>
> ...
> }
>
> public class DatabaseOptionImpl implements Serializable, Option {
>
> ...
>    @ManyToOne()
>    @JoinColumn(name="parent_question_id")
>    private DatabaseQuestionImpl parentQuestion;
> ...
> }
>
> Here are logs entries from a case where I do a find(Class, Id) on the
> question class, update some fields on it, and then iterate through the
> options.  You can see that there is a select statement for the  
> question,
> then an update statement and then another select statement for the  
> options.
> My understanding of EAGER loading is that the find operation should  
> have
> retrieved the entire graph.  Is this a bug, or a misunderstanding on  
> my
> part?
>
> [18:53:49.515] FINE
> com.amirsys.pathwork.entity.dynamicquestion.DatabaseQuestionImpl amber
> expire  
> com.amirsys.pathwork.entity.dynamicquestion.DatabaseQuestionImpl[1]
> [18:53:49.515] FINEST com.caucho.amber.manager.AmberConnection amber
> com.amirsys.pathwork.entity.dynamicquestion.DatabaseQuestionImpl[1]
> addInternalEntity
> [18:53:49.515] FINE com.caucho.sql.spy.SpyConnection.XA
> jdbc/postgres.0:setAutoCommit(false)
> [18:53:49.515] FINE com.caucho.sql.spy.SpyConnection
> jdbc/postgres.0.18:prepareStatement(select o.multipleAnswersPermitted,
> o.questionText, o.rootQuestion from question o where
> o.id=?,type=1003,concurrency=1007)
> [18:53:49.515] FINE com.caucho.sql.spy.SpyPreparedStatement
> jdbc/postgres.0.18:setLong(1,1)
> [18:53:49.515] FINE com.caucho.sql.spy.SpyPreparedStatement
> jdbc/postgres.0.18:executeQuery(select o.multipleAnswersPermitted,
> o.questionText, o.rootQuestion from question o where o.id=?)
> [18:53:49.515] FINER
> com.amirsys.pathwork.entity.dynamicquestion.DatabaseQuestionImpl amber
> loaded-0  
> com.amirsys.pathwork.entity.dynamicquestion.DatabaseQuestionImpl
> [18:53:49.515] FINER com.caucho.amber.entity.RowInvalidateCompletion
> RowInvalidateCompletion table: question key: 1
> [18:53:49.515] FINE com.caucho.sql.spy.SpyConnection
> jdbc/postgres.0:isClosed() -> false
> [18:53:49.515] FINE com.caucho.sql.spy.SpyConnection
> jdbc/postgres.0.19:prepareStatement(update question set
> multipleAnswersPermitted=?, questionText=?, rootQuestion=? where
> id=?,type=1003,concurrency=1007)
> [18:53:49.515] FINE com.caucho.sql.spy.SpyPreparedStatement
> jdbc/postgres.0.19:setBoolean(1,true)
> [18:53:49.515] FINE com.caucho.sql.spy.SpyPreparedStatement
> jdbc/postgres.0.19:setString(2,What clinical )
> [18:53:49.515] FINE com.caucho.sql.spy.SpyPreparedStatement
> jdbc/postgres.0.19:setBoolean(3,true)
> [18:53:49.515] FINE com.caucho.sql.spy.SpyPreparedStatement
> jdbc/postgres.0.19:setLong(4,1)
> [18:53:49.687] FINE com.caucho.sql.spy.SpyPreparedStatement
> jdbc/postgres.0.19:executeUpdate(update question set
> multipleAnswersPermitted=?, questionText=?, rootQuestion=? where  
> id=?) -> 1
> [18:53:49.687] FINE
> com.amirsys.pathwork.entity.dynamicquestion.DatabaseQuestionImpl amber
> update  
> com.amirsys.pathwork.entity.dynamicquestion.DatabaseQuestionImpl -
> PK: 1
> [18:53:49.687] FINE com.caucho.sql.spy.SpyConnection
> jdbc/postgres.0:isClosed() -> false
> [18:53:49.687] FINE com.caucho.sql.spy.SpyConnection
> jdbc/postgres.0.20:prepareStatement(select c.id, c.followUpQuestionId,
> c.freeForm, c.optionType, c.parent_question_id, c.valueAsString from
> question o, option c where (c.parent_question_id = o.id) and (o.id =
> ?),type=1003,concurrency=1007)
> [18:53:49.687] FINE com.caucho.sql.spy.SpyPreparedStatement
> jdbc/postgres.0.20:clearParameters()
> [18:53:49.687] FINE com.caucho.sql.spy.SpyPreparedStatement
> jdbc/postgres.0.20:setLong(1,1)
> [18:53:49.687] FINE com.caucho.sql.spy.SpyPreparedStatement
> jdbc/postgres.0.20:executeQuery(select c.id, c.followUpQuestionId,
> c.freeForm, c.optionType, c.parent_question_id, c.valueAsString from
> question o, option c where (c.parent_question_id = o.id) and (o.id  
> = ?))
>
> -- 
> View this message in context: 
> http://www.nabble.com/Amber-trouble-with-OneToMany-eager-loading-tp15368081p15368081.html
> Sent from the Resin mailing list archive at Nabble.com.
>
>
>
> _______________________________________________
> resin-interest mailing list
> resin-interest@caucho.com
> http://maillist.caucho.com/mailman/listinfo/resin-interest



_______________________________________________
resin-interest mailing list
resin-interest@caucho.com
http://maillist.caucho.com/mailman/listinfo/resin-interest

Reply via email to