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 <[email protected]> wrote:

> From: Earnie Dyke <[email protected]>
> Subject: Inner Join
> To: [email protected]
> 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.
> 
> 



Reply via email to