Craig
On Aug 13, 2007, at 2:32 PM, Patrick Linskey wrote:
... so maybe the clearFetchGroups() is causing the implicit fetching of the primitives in Address to be disabled. What happens if you call resetFetchGroups() before setting things up instead? -Patrick On 8/13/07, Pinaki Poddar <[EMAIL PROTECTED]> wrote:I thought the clear*() operations were to remove any customfetchgroups that were added to > the plan, and left default alone.clearFetchGroups() clears all the fetch groups. Does the documentationsay otherwise? Pinaki Poddar 972.834.2865 -----Original Message----- From: Joe Grassel [mailto:[EMAIL PROTECTED] Sent: Monday, August 13, 2007 4:17 PM To: [email protected] Subject: Re: Fetch GroupsOk, I commented out all the @FetchGroup annotations, and commented out the lines that add the fetchgroups to the fetchplan. I still had thecurious behavior that my address 1:1 relationship, now annotated explicitly as eager, was still not getting loaded, in fact it started coming up null instead of a proxy object even.however, after I commented out these preceding lines (they appear before adding my fetchgroups to the plan, I probably should have included themin my code snipper earlier): // oem.getFetchPlan().clearFetchGroups(); // oem.getFetchPlan().clearFields(); Then the address relationship started displaying eager behavior. Dideither or both of the clear* operations remove the default fetch groupfrom the plan? If so, is that the intended function? I thought the clear*() operations were to remove any custom fetchgroups that were added to the plan, and left default alone. On Monday, August 13, 2007, at 03:36PM, "Patrick Linskey" <[EMAIL PROTECTED]> wrote:What if you remove the fetch group annotations, and just set fetch typeto eager on the relation? If that, or that + @Basic, works, then it must be a problem with our fetch group traversal application. -Patrick On 8/13/07, Joe Grassel <[EMAIL PROTECTED]> wrote:No change:SELECT t0.EMP_TYPE, t1.id, t0.dept_id, t0.description, t0.manager_id FROM Employee t0 LEFT OUTER JOIN Address t1 ON t0.address_id = t1.idWHERE t0.id = ? [params=(int) 1] On Monday, August 13, 2007, at 03:25PM, "Patrick Linskey"<[EMAIL PROTECTED]> wrote:Hmm. What happens if you put @Basic annotations on the fields inAddress?-Patrick On 8/13/07, Joe Grassel <[EMAIL PROTECTED]> wrote:Looks like the only query that goes out is: [main] openjpa.jdbc.SQL - <t 16515324, conn 1700554076> executing prepstmnt 1983018546 SELECT t0.EMP_TYPE, t1.id, t0.dept_id, t0.description, t0.manager_id FROM Employee t0 LEFT OUTER JOIN Address t1 ON t0.address_id = t1.id WHERE t0.id = ? [params=(int) 1] On Monday, August 13, 2007, at 02:37PM, "Patrick Linskey"<[EMAIL PROTECTED]> wrote:Is this a bug in OpenJPA, or is a proxy object supposed to bein 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 <[EMAIL PROTECTED]> wrote:Hello, I'm writing a program that is trying to capitalize onFetchGroups, 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=[EMAIL PROTECTED](name="description")} ),entity's primary key is returned. I was under the impression that with the AddressFetchGroup added to the fetch plan, that the whole (Address)@FetchGroup(name="AddressFetchGroup", attributes= [EMAIL PROTECTED](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 Addressentity's persistent state would be eagerly loaded.Is this a bug in OpenJPA, or is a proxy object supposed to bein the Address entity's place?-- Patrick Linskey 202 669 5907-- Patrick Linskey 202 669 5907-- Patrick Linskey 202 669 5907Notice: This email message, together with any attachments, may contain information of BEA Systems, Inc., its subsidiaries and affiliated entities, that may be confidential, proprietary, copyrighted and/or legally privileged, and is intended solely for the use of the individual or entity named in this message. If you are not the intended recipient, and have received this message in error, please immediately return this by email and then delete it.-- 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
