Excellent. Makes sense now that I see the solution. Thanks!
Earnie! ________________________________ From: Fay Wang (via Nabble) <[email protected]> To: Earnie Dyke <[email protected]> Sent: Tuesday, April 28, 2009 12:12:13 PM Subject: Re: Inner Join Hi Earnie, For your named query: "SELECT p FROM Person p ORDER BY p.me DESC, p.lastName, p.firstName, p.middleName, p.lineage.description" If you take out order by p.lineage.description, the push-down SQL will become left outer join. Fay --- On Tue, 4/28/09, Earnie Dyke <earnied...@...> wrote: > From: Earnie Dyke <earnied...@...> > Subject: Inner Join > To: us...@... > Date: Tuesday, April 28, 2009, 7:09 AM > > Greetings all, > > I am using OpenJPA v1.2.1 with the following class and the > SQL that is > created uses an INNER JOIN for the join between the PERSON > and LINEAGE > tables. How can I make that an OUTER JOIN? > > Earnie! > > @Entity > @EPenEntity(listNamedQueryName = "Person.people") > @Table(name = "PERSON") > @NamedQueries({ > @NamedQuery(name = "Person.people", query = > "SELECT p FROM Person p > ORDER BY p.me DESC, p.lastName, p.firstName, p.middleName, > p.lineage.description"), > @NamedQuery(name = "Person.findMe", query = > "SELECT p FROM Person p > WHERE p.me = true") > }) > public class Person implements Serializable { > > private static final long serialVersionUID = > 1L; > @Id > @GeneratedValue(strategy = > GenerationType.IDENTITY) > private Integer id; > @Column(name = "ME", nullable = false) > private Boolean me = false; > @Column(name = "DATEOFBIRTH") > @Temporal(TemporalType.DATE) > private Date dateOfBirth; > @Column(name = "GENDER", length = 6) > private String gender; > @Column(name = "FIRSTNAME", length = 50) > private String firstName; > @Column(name = "MIDDLENAME", length = 50) > private String middleName; > @Column(name = "LASTNAME", length = 50) > private String lastName; > @ManyToOne(fetch = > FetchType.EAGER,cascade={CascadeType.MERGE,CascadeType.PERSIST,CascadeType.REFRESH}) > > @JoinColumn(name = "LINEAGEID") > private Lineage lineage; > @ManyToOne(fetch = > FetchType.EAGER,cascade={CascadeType.MERGE,CascadeType.PERSIST,CascadeType.REFRESH}) > > @JoinColumn(name = "TITLEID") > private Title title; > @OneToMany(fetch = > FetchType.EAGER,cascade={CascadeType.MERGE,CascadeType.PERSIST,CascadeType.REFRESH}) > > @JoinTable(name = "PERSONADDRESS", > joinColumns = > @JoinColumn(name = > "PERSONID"),inversejoincolum...@joincolumn(name="ADDRESSID")) > private Collection<PersonAddress> > addresses = new > ArrayList<PersonAddress>(0); > @OneToMany(fetch = > FetchType.EAGER,cascade={CascadeType.MERGE,CascadeType.PERSIST,CascadeType.REFRESH}) > > @JoinTable(name = "PERSONPHONENUMBER", > joinColumns = > @JoinColumn(name = > "PERSONID"),inversejoincolum...@joincolumn(name="PHONENUMBERID")) > private Collection<PersonPhoneNumber> > phoneNumbers = new > ArrayList<PersonPhoneNumber>(0)..... > > ...other stuff not shown > > -- > View this message in context: > http://n2.nabble.com/Inner-Join-tp2733679p2733679.html > Sent from the OpenJPA Users mailing list archive at > Nabble.com. > > ________________________________ This email is a reply to your post @ http://n2.nabble.com/Inner-Join-tp2733679p2734448.html You can reply by email or by visting the link above. -- View this message in context: http://n2.nabble.com/Inner-Join-tp2733679p2734839.html Sent from the OpenJPA Users mailing list archive at Nabble.com.
