Marc,

Here is the code block:
       System.out.println("About to do a 'getAttributes' call...");
componentClass.getAttributes(); System.out.println("Finished the 'getAttributes' call...");

And here is the trace:
40217 palmJPA TRACE [http-0.0.0.0-8080-4] openjpa.jdbc.SQL - <t 32474996, conn 29265516> executing prepstmnt 566738 SELECT t0.classDeprecated, t0.classDescription FROM class t0 WHERE t0.classID = ? [params=(long) 1] 40218 palmJPA TRACE [http-0.0.0.0-8080-4] openjpa.jdbc.SQL - <t 32474996, conn 29265516> [1 ms] spent 40218 palmJPA TRACE [http-0.0.0.0-8080-4] openjpa.jdbc.JDBC - <t 32474996, conn 29265516> [0 ms] close
About to do a 'getAttributes' call...
Finished the 'getAttributes' call...

Nothing happened at all in between the two System.out.println's - is there a more verbose level of logging than TRACE?

Jay


Marc Prud'hommeaux wrote:
Jay-

Nothing jumps out at me as being wrong with your mapping...

Note: I don't get any errors or exceptions, just no secondary queries when I do a 'find('

If you call ComponentClass.getAttributes(), are you saying that no SQL is executed? That would be surprising. Can you enable SQL logging and sent the resulting SQL from some code like:

  ComponentClass c = em.find(ComponentClass.class, someExistingId);
  c.getAttributes();




On Apr 19, 2007, at 10:48 AM, Jay D. McHugh wrote:

Hello all,

I am trying to map a one to many relationship with the 'one' side as the relationship owner using @EntityJoinColumn.

Actually, I am trying to do this several times within my persistence unit.

In two cases, it seems to be working - but no matter what I do (including giving up on having the 'one' side own the relationship and push it over to the 'many' side) I cannot seem to get a third case to work. It just refuses to acknowledge that there is any reference that needs to be followed.

Here are the two classes that are supposed to be linked - Can anyone see a problem with how I did this?

Note: I don't get any errors or exceptions, just no secondary queries when I do a 'find('

Thanks for any help,

Jay

----------- Class 1 -------------
package com.pubint.ejb.entity;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.Table;

import org.apache.openjpa.persistence.jdbc.ElementJoinColumn;

@Entity
@Table(name="componentClass")
public class ComponentClass {
   private long classID;
   private String classDescription;
   private boolean classDeprecated;

private Collection<ClassAttrib> attributes = new ArrayList<ClassAttrib>();

   public ComponentClass() {

   }

   @Id
   @GeneratedValue(strategy = GenerationType.IDENTITY)
   @Column(name="classID")
   public long getClassID() {
       return classID;
   }

   public void setClassID(long classID) {
       this.classID = classID;
   }

   @Column(name="classDescription")
   public String getClassDescription() {
       return classDescription;
   }

   public void setClassDescription(String classDescription) {
       this.classDescription = classDescription;
   }

   @Column(name="classDeprecated")
   public boolean isClassDeprecated() {
       return classDeprecated;
   }

   public void setClassDeprecated(boolean classDeprecated) {
       this.classDeprecated = classDeprecated;
   }

   @OneToMany
   @ElementJoinColumn(name="classID", referencedColumnName="classID")
   public Collection<ClassAttrib> getAttributes() {
       return attributes;
   }

   public void addAttribute(ClassAttrib attribute) {
       attributes.add(attribute);
   }
}


-------------- Class 2 --------------------
package com.pubint.ejb.entity;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;

@Entity
@Table(name="xClassAttrib")
public class ClassAttrib {
   private long id;
   private long classID;
   private Attrib attribute;
   private long displaySequence;
   private boolean mandatory;
   private boolean requiresPrototype;
   private boolean lockedByPrototype;

   public ClassAttrib() {

   }

   @Id
   @GeneratedValue(strategy = GenerationType.IDENTITY)
   @Column(name="id")
   public long getId() {
       return id;
   }

   public void setId(long id) {
       this.id = id;
   }
     public long getClassID() {
       return classID;
   }
     public void setClassID(long classID) {
       this.classID = classID;
   }

   @ManyToOne
   @JoinColumn(name="attributeID")
   public Attrib getAttribute() {
       return attribute;
   }

   public void setAttribute(Attrib attribute) {
       this.attribute = attribute;
   }

   @Column(name="displaySequence")
   public long getDisplaySequence() {
       return displaySequence;
   }

   public void setDisplaySequence(long seq) {
       displaySequence = seq;
   }

   @Column(name="mandatory")
   public boolean isMandatory() {
       return mandatory;
   }

   public void setMandatory(boolean mandatory) {
       this.mandatory = mandatory;
   }

   @Column(name="lockedByPrototype")
   public boolean isLockedByPrototype() {
       return lockedByPrototype;
   }

   public void setLockedByPrototype(boolean lockedByPrototype) {
       this.lockedByPrototype = lockedByPrototype;
   }

   @Column(name="requiresPrototype")
   public boolean isRequiresPrototype() {
       return requiresPrototype;
   }

   public void setRequiresPrototype(boolean requiresPrototype) {
       this.requiresPrototype = requiresPrototype;
   }
}




Reply via email to