I have three Classes (User, Person, Company) that are all subclasses
of BaseClass.

Company has a list of employees<Person>
Person may have a user<User>

@PersistenceCapable(detachable="true")
@Inheritance(strategy = InheritanceStrategy.SUBCLASS_TABLE)
public abstract class BaseObject {

  @PrimaryKey
  @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
  Key id;
}

@PersistenceCapable(detachable="true")
public class Company  extends BaseObject {

  @Persistent(mappedBy = "employer")
  @Order(extensions = @Extension(vendorName="datanucleus", key="list-
ordering", value="lastName asc, firstName asc"))
  List<Person> employees;
}

@PersistenceCapable(detachable="true")
public class Person extends BaseObject {

  @Persistent
  Company employer;

//  @Persistent(mappedBy = "person")
//  User user;
}

@PersistenceCapable(detachable="true")
public class User extends BaseObject {
  @Persistent
  Person person;
}

Now I can create a company, persist it, then create a person, set its
employer, and persist it.  But I cannot create a user and set its
person.  GAE thinks that I am trying to make User the parent of
person, but it actually the other way around.
"Detected attempt to establish User(7) as the parent of Company(5)/
Person(6) but the entity identified by Company(5)/Person(6) is already
a child of Company(5)."

I had to comment out the User back reference in Person since with it,
GAE things that Person has more than one parent.  This is odd as well,
but I can live without it if i have to.  I am just trying to avoid
doing this with not-owned relationship between user and person.

what am i doing wrong? or is this just a bug?

Thanks.

-- 
You received this message because you are subscribed to the Google Groups 
"Google App Engine for Java" group.
To post to this group, send email to google-appengine-j...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine-java+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine-java?hl=en.

Reply via email to