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!
smime.p7s
Description: S/MIME cryptographic signature
