openjpa-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Patrick Linskey" <plins...@gmail.com>
Subject Re: Fetch Groups
Date Mon, 13 Aug 2007 19:36:33 GMT
> Is this a bug in OpenJPA, or is a proxy object supposed to be in the Address entity's
place?

I would expect the address data to be available.

What SQL is produced by the find call?

-Patrick

On 8/13/07, Joe Grassel <jgrassel@mac.com> wrote:
> Hello, I'm writing a program that is trying to capitalize on FetchGroups, but I'm hitting
some behavior that I was not expecting, based on what I read from the manual.
>
> I have two entities, Employee and Address, as follows:
>
> @Entity
> @FetchGroups({
>         @FetchGroup(name="DescFetchGroup", attributes= {@FetchAttribute(name="description")}
),
>         @FetchGroup(name="AddressFetchGroup", attributes= {@FetchAttribute(name="address")}
)
> //...
> })
> public class Employee {
>     @Id
>     private int id;
>
> //...
>
> @Basic(fetch=FetchType.LAZY)
>     private String description;
>
>  @OneToOne(fetch=FetchType.LAZY)
>     private Address address;
>
> //...
>
> }
>
> and
>
> @Entity
> public class Address {
>     @Id
>     private int id;
>
>     private String street;
>     private String city;
>     private String state;
>     private int zip;
>
> //...
>
> public String toString()
>     {
>         StringBuffer sb = new StringBuffer();
>         sb.append("Address(id=").append(this.id).append(")");
>         sb.append(": street=").append(getStreet());
>         sb.append(": city=").append(getCity());
>         sb.append(": state=").append(getState());
>         sb.append(": zip=").append(getZip());
>
>         return new String(sb);
>     }
> }
>
> This is what I'm trying to do:
>
> // ...
> OpenJPAEntityManager oem = (OpenJPAEntityManager) em;
> oem.getFetchPlan().addFetchGroups("DescFetchGroup");
> oem.getFetchPlan().addFetchGroups("AddressFetchGroup");
>
> oem.clear();
> Employee emp = oem.find(Employee.class, 1);
> oem.clear();
>
> if (emp.getDescription() != null)
>   System.out.println("Employee description=" + emp.getDescription());
> else
>   System.out.println("Description is null");
>
> if (emp.getAddress() != null)
>   System.out.println("Employee address=" + emp.getAddress());
> else
>   System.out.println("Address is null");
>
> // ...
>
> I get the following results:
>
> Employee description=Description 1
> Employee address=Address(id=1): street=null: city=null: state=null: zip=0
>
> It looks like an empty proxy object containing just the Address entity's primary key
is returned.  I was under the impression that with the AddressFetchGroup added to the fetch
plan, that the whole (Address) entity's persistent state would be eagerly loaded.
>
> Is this a bug in OpenJPA, or is a proxy object supposed to be in the Address entity's
place?
>


-- 
Patrick Linskey
202 669 5907

Mime
View raw message