Thanks for the info! In the mean time, I will use my JPQL query instead.
Christian On 7/25/07, Kevin Sutter <[EMAIL PROTECTED]> wrote:
I agree (being the owner of OPENJPA-281)... I have a patch almost ready for this, but I've found a few edge cases that still need to resolved... Kevin On 7/24/07, Craig L Russell <[EMAIL PROTECTED]> wrote: > > This sounds a lot like https://issues.apache.org/jira/browse/OPENJPA-281 > > Craig > > On Jul 24, 2007, at 1:27 PM, Christian Defoy wrote: > > > Oups! I forgot to include it: > > > > public enum ShapeTypes > > { > > CIRCLE, > > SQUARE, > > TRIANGLE, > > RECTANGLE; > > } > > > > > > On 7/24/07, Patrick Linskey <[EMAIL PROTECTED]> wrote: > >> > Playing around a bit with those classes, I found that if I mark > >> > attribute Shape.type as EAGER, both techniques produce only one > >> select > >> > statement... > >> > >> And ShapeTypes is an enum? > >> > >> -Patrick > >> > >> On 7/24/07, Christian Defoy <[EMAIL PROTECTED]> wrote: > >> > Hi Patrick, > >> > > >> > I have two classes. I stripped the accessors and mutators to > >> shrink > >> > them a bit (I am unsure if attachments get stripped or not). > >> > > >> > @Entity > >> > @Table(name="SHAPE") > >> > public class Shape > >> > { > >> > @Column(name="shape_id") > >> > @Id > >> > @GeneratedValue(strategy=GenerationType.IDENTITY) > >> > private int id; > >> > > >> > @Column( name="type_id" ) > >> > private ShapeTypes type; > >> > > >> > @OneToOne( mappedBy="parent", cascade=CascadeType.ALL, > >> > fetch=FetchType.EAGER ) > >> > private Attachment attachment; > >> > } > >> > > >> > @Entity > >> > @Table( name="attach" ) > >> > public class Attachment > >> > { > >> > @Id > >> > @GeneratedValue( strategy=GenerationType.IDENTITY ) > >> > @Column( name="attach_id" ) > >> > private int id; > >> > > >> > @OneToOne( cascade=CascadeType.ALL, fetch=FetchType.LAZY ) > >> > @Column( name="shape_id" ) > >> > private Shape parent; > >> > > >> > private String value; > >> > } > >> > > >> > When I use the find() method, I see the following selects: > >> > > >> > SELECT t0.SHAPE_ID FROM SHAPE t0 WHERE t0.SHAPE_ID = ? [params= > >> (int) 16] > >> > SELECT t0.ATTACH_ID, t0.SHAPE_ID, t0.VALUE FROM ATTACH t0 WHERE > >> > t0.SHAPE_ID = ? [params=(int) 16] > >> > > >> > When I use a JPQL query, I get the following select: > >> > > >> > SELECT t0.SHAPE_ID, t1.ATTACH_ID, t1.SHAPE_ID, t1.VALUE FROM > >> SHAPE t0 > >> > LEFT OUTER JOIN ATTACH t1 ON t0.SHAPE_ID = t1.SHAPE_ID WHERE > >> > (t0.SHAPE_ID = ?) [params=(int) 16] > >> > > >> > Playing around a bit with those classes, I found that if I mark > >> > attribute Shape.type as EAGER, both techniques produce only one > >> select > >> > statement... > >> > > >> > Thanks, > >> > > >> > Christian > >> > > >> > > >> > On 7/24/07, Patrick Linskey <[EMAIL PROTECTED]> wrote: > >> > > Can you post the selects that you're seeing and the domain model? > >> > > > >> > > Thanks, > >> > > > >> > > -Patrick > >> > > > >> > > On 7/24/07, Christian Defoy <[EMAIL PROTECTED]> wrote: > >> > > > Hello, > >> > > > > >> > > > I just noticed that if I call entityManager.find() to > >> retrieve an > >> > > > object, many select statements (one per relation) are > >> generated even > >> > > > though the relations are marked as FetchType.EAGER. > >> > > > > >> > > > If I use a JPQL query instead, only one select statement is > >> generated. > >> > > > The JPQL looks like this: "SELECT s FROM Shape s WHERE s.id > >> = :id" > >> > > > > >> > > > Is that normal? Is there some configuration property that I > >> can change? > >> > > > > >> > > > Thanks in advance! > >> > > > > >> > > > Christian > >> > > > > >> > > > >> > > > >> > > -- > >> > > Patrick Linskey > >> > > 202 669 5907 > >> > > > >> > > >> > >> > >> -- > >> Patrick Linskey > >> 202 669 5907 > >> > > Craig Russell > Architect, Sun Java Enterprise System http://java.sun.com/products/jdo > 408 276-5638 mailto:[EMAIL PROTECTED] > P.S. A good JDO? O, Gasp! > > >
