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;
}
}