My favorites | Sign in
Google
                
Details: Show all Hide all

Last 7 days

  • Dec 27, 2009
    r439 (No need to update parent when child is updated. Added a var...) committed by max.ross   -   No need to update parent when child is updated. Added a variety of tests to lock down the number of put operations we perform
    No need to update parent when child is updated. Added a variety of tests to lock down the number of put operations we perform
  • Dec 26, 2009
    r438 (identityType = IdentityType.APPLICATION is no longer necessa...) committed by max.ross   -   identityType = IdentityType.APPLICATION is no longer necessary.
    identityType = IdentityType.APPLICATION is no longer necessary.
  • Dec 26, 2009
    r437 (Now that we can handle multiple updates to the same entity i...) committed by max.ross   -   Now that we can handle multiple updates to the same entity in a single txn we can start storing child keys on the parent. This CL just changes how we write things and updates all existing tests to pass - I haven't updated the read logic to take advantage of the new fields. There are also more tests to be written and a few easy optimizations to avoid extraneous updates, but those will come in subsequent CLs.
    Now that we can handle multiple updates to the same entity in a single txn we can start storing child keys on the parent. This CL just changes how we write things and updates all existing tests to pass - I haven't updated the read logic to take advantage of the new fields. There are also more tests to be written and a few easy optimizations to avoid extraneous updates, but those will come in subsequent CLs.
  • Dec 25, 2009
    issue 179 (List.remove(int index) doesn't work correctly) reported by ailinykh   -   What steps will reproduce the problem? 1. Create two persistent classes with parent/child relation: class Account{ @Persistent(mappedBy="account") List<Phone> phones = new ArrayList<Phone>(); } and class Phone { @Persistent Account account; } 2. Add two Phone objects into list, so phones = [phone1, phone2] 3. Remove children by calling phones.remove(0); phones.remove(0); 4. Save and then restore Account object. Phone list should be empty, but it has phone2 object. If phones are removed in this way phones.remove(1); phones.remove(0); or phones.clear(); everything is all right. I observe this behavior both on local machine (Windows Xp, Java 1.6.0_16, appengine 1.3) and on deployed version.
    What steps will reproduce the problem? 1. Create two persistent classes with parent/child relation: class Account{ @Persistent(mappedBy="account") List<Phone> phones = new ArrayList<Phone>(); } and class Phone { @Persistent Account account; } 2. Add two Phone objects into list, so phones = [phone1, phone2] 3. Remove children by calling phones.remove(0); phones.remove(0); 4. Save and then restore Account object. Phone list should be empty, but it has phone2 object. If phones are removed in this way phones.remove(1); phones.remove(0); or phones.clear(); everything is all right. I observe this behavior both on local machine (Windows Xp, Java 1.6.0_16, appengine 1.3) and on deployed version.
  • Dec 24, 2009
    issue 176 (owned 1-to-n relationship does not work in super class for u...) Status changed by max.ross   -   Could you please share your code that generates the exception? As it stands I'm only guessing at what you're doing. Also, I fixed a few inheritance-related bugs in SDK 1.3.0 so please try to reproduce the exception with that. Here's some code that works for me: @PersistenceCapable(identityType = IdentityType.APPLICATION) @Inheritance(customStrategy = "complete-table") public class A { @PrimaryKey @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY) Long id; @Persistent @Element(dependent = "true") List<B> bList = new ArrayList<B>(); public Long getId() { return id; } public List<B> getBList() { return bList; } } @PersistenceCapable(identityType = IdentityType.APPLICATION) public class ASub extends A { } @PersistenceCapable(identityType = IdentityType.APPLICATION) public class B { @PrimaryKey @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY) Key id; } public void testReport() { ASub a = new ASub(); a.bList.add(new B()); beginTxn(); pm.makePersistent(a); commitTxn(); beginTxn(); a = pm.getObjectById(ASub.class, a.getId()); pm.deletePersistent(a); commitTxn(); }
    Status: Invalid
    Could you please share your code that generates the exception? As it stands I'm only guessing at what you're doing. Also, I fixed a few inheritance-related bugs in SDK 1.3.0 so please try to reproduce the exception with that. Here's some code that works for me: @PersistenceCapable(identityType = IdentityType.APPLICATION) @Inheritance(customStrategy = "complete-table") public class A { @PrimaryKey @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY) Long id; @Persistent @Element(dependent = "true") List<B> bList = new ArrayList<B>(); public Long getId() { return id; } public List<B> getBList() { return bList; } } @PersistenceCapable(identityType = IdentityType.APPLICATION) public class ASub extends A { } @PersistenceCapable(identityType = IdentityType.APPLICATION) public class B { @PrimaryKey @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY) Key id; } public void testReport() { ASub a = new ASub(); a.bList.add(new B()); beginTxn(); pm.makePersistent(a); commitTxn(); beginTxn(); a = pm.getObjectById(ASub.class, a.getId()); pm.deletePersistent(a); commitTxn(); }
    Status: Invalid
  • Dec 24, 2009
    issue 178 (CascadeType.ALL on ManyToOne causes StackOverflow) Blocked on changed by max.ross   -   DataNucleus issue filed: http://www.jpox.org/servlet/jira/browse/NUCCORE-435 Even if it gets fixed immediately it won't be accessible in GAE until we upgrade to DataNuc 2.0 which is still a little ways off.
    DataNucleus issue filed: http://www.jpox.org/servlet/jira/browse/NUCCORE-435 Even if it gets fixed immediately it won't be accessible in GAE until we upgrade to DataNuc 2.0 which is still a little ways off.
  • Dec 24, 2009
    issue 178 (CascadeType.ALL on ManyToOne causes StackOverflow) Labels changed by max.ross   -   DataNucleus issue filed: http://www.jpox.org/servlet/jira/browse/NUCCORE-435 Even if it gets fixed immediately it won't be accessible in GAE until we upgrade to DataNuc 2.0 which is still a little ways off.
    Labels: TargetRelease-1.1.0
    DataNucleus issue filed: http://www.jpox.org/servlet/jira/browse/NUCCORE-435 Even if it gets fixed immediately it won't be accessible in GAE until we upgrade to DataNuc 2.0 which is still a little ways off.
    Labels: TargetRelease-1.1.0
  • Dec 24, 2009
    issue 178 (CascadeType.ALL on ManyToOne causes StackOverflow) commented on by max.ross   -   Confirmed the same issue with datanuc trunk. I'll file a bug over there.
    Confirmed the same issue with datanuc trunk. I'll file a bug over there.
  • Dec 24, 2009
    issue 178 (CascadeType.ALL on ManyToOne causes StackOverflow) commented on by max.ross   -   Confirmed the same problem with DataNucleus 1.1.5 RDBMS (hsql). I'll see if I can repro with datanuc trunk.
    Confirmed the same problem with DataNucleus 1.1.5 RDBMS (hsql). I'll see if I can repro with datanuc trunk.

Last 30 days

  • Dec 23, 2009
    issue 178 (CascadeType.ALL on ManyToOne causes StackOverflow) reported by max.ross   -   Original report here: http://code.google.com/p/googleappengine/issues/detail?id=2541 Pretty easy to repro: @Entity public static class UserImpl { @Id @GeneratedValue(strategy=GenerationType.IDENTITY) private Key key; @OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL, mappedBy = "user") private List<TagsRIEImpl> tagRIEs = new LinkedList<TagsRIEImpl>(); public UserImpl() { this.tagRIEs.add(new TagsRIEImpl()); } public Key getKey() { return key; } } @Entity public static class TagsRIEImpl { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Key key; @ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL) private UserImpl user; } public void testDelete() throws Exception { UserImpl user = new UserImpl(); beginTxn(); em.persist(user); commitTxn(); em.close(); em = emf.createEntityManager(); beginTxn(); user = em.find(UserImpl.class, user.getKey()); em.remove(user); commitTxn(); em.close(); }
    Original report here: http://code.google.com/p/googleappengine/issues/detail?id=2541 Pretty easy to repro: @Entity public static class UserImpl { @Id @GeneratedValue(strategy=GenerationType.IDENTITY) private Key key; @OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL, mappedBy = "user") private List<TagsRIEImpl> tagRIEs = new LinkedList<TagsRIEImpl>(); public UserImpl() { this.tagRIEs.add(new TagsRIEImpl()); } public Key getKey() { return key; } } @Entity public static class TagsRIEImpl { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Key key; @ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL) private UserImpl user; } public void testDelete() throws Exception { UserImpl user = new UserImpl(); beginTxn(); em.persist(user); commitTxn(); em.close(); em = emf.createEntityManager(); beginTxn(); user = em.find(UserImpl.class, user.getKey()); em.remove(user); commitTxn(); em.close(); }
  • Dec 23, 2009
    r436 (add final 1.3.0 sdk jars) committed by max.ross   -   add final 1.3.0 sdk jars
    add final 1.3.0 sdk jars
  • Dec 20, 2009
    issue 177 (Creator exression support in JPA) reported by bombaygoose   -   What steps will reproduce the problem? 1. Create any JPA compliant Entity using annotations 2. fire a creator expression query e.g. em.createQuery("SELECT new User (id) from User u"); and execute it 3. You get an exception - org.datanucleus.store.appengine.query.DatastoreQuery$UnsupportedDatastoreOp eratorException: Problem with query <SELECT new User(id) FROM User u>: App Engine datastore does not support operator org.datanucleus.query.expression.CreatorExpression. What is the expected output? What do you see instead? I thought I will get User objects with only id populated, instead I get org.datanucleus.store.appengine.query.DatastoreQuery$UnsupportedDatastoreOp eratorException: Problem with query <SELECT new User(id) FROM User u>: App Engine datastore does not support operator org.datanucleus.query.expression.CreatorExpression. What version of the product are you using? On what operating system? Appengine 1.2.8 with Datanucleus-jpa-1.1.5.jar and geronimo-jpa_3.0_spec- 1.1.1.jar Please provide any additional information below. If you do not allow this, there can be possible performance problems. In real world application schenario, there are so many cases, where you have joins and you just want to get id and name from a joined table. With normal joins, the whole Object is retrieved (not in the above example), which is unnecessary, if you are not going to process all of the retrieved fields.
    What steps will reproduce the problem? 1. Create any JPA compliant Entity using annotations 2. fire a creator expression query e.g. em.createQuery("SELECT new User (id) from User u"); and execute it 3. You get an exception - org.datanucleus.store.appengine.query.DatastoreQuery$UnsupportedDatastoreOp eratorException: Problem with query <SELECT new User(id) FROM User u>: App Engine datastore does not support operator org.datanucleus.query.expression.CreatorExpression. What is the expected output? What do you see instead? I thought I will get User objects with only id populated, instead I get org.datanucleus.store.appengine.query.DatastoreQuery$UnsupportedDatastoreOp eratorException: Problem with query <SELECT new User(id) FROM User u>: App Engine datastore does not support operator org.datanucleus.query.expression.CreatorExpression. What version of the product are you using? On what operating system? Appengine 1.2.8 with Datanucleus-jpa-1.1.5.jar and geronimo-jpa_3.0_spec- 1.1.1.jar Please provide any additional information below. If you do not allow this, there can be possible performance problems. In real world application schenario, there are so many cases, where you have joins and you just want to get id and name from a joined table. With normal joins, the whole Object is retrieved (not in the above example), which is unnecessary, if you are not going to process all of the retrieved fields.
  • Dec 18, 2009
    issue 176 (owned 1-to-n relationship does not work in super class for u...) reported by Mark.Wuesthoff   -   What steps will reproduce the problem? 1. create a super class with a collection of datastore objects 2. create a subclass and persist it 3. try to delete or update What is the expected output? What do you see instead? error is thrown: Non-owned relationships are not currently supported What version of the product are you using? On what operating system? App Engine SDK 1.2.8 Please provide any additional information below. Only tested using the development server
    What steps will reproduce the problem? 1. create a super class with a collection of datastore objects 2. create a subclass and persist it 3. try to delete or update What is the expected output? What do you see instead? error is thrown: Non-owned relationships are not currently supported What version of the product are you using? On what operating system? App Engine SDK 1.2.8 Please provide any additional information below. Only tested using the development server
  • Dec 17, 2009
    issue 166 (setResultClass class cast error) commented on by otherbiz   -   Please fix this.
    Please fix this.
  • Dec 17, 2009
    issue 175 (Primary key Exception not came when it the Duplicate value m...) reported by vinayagamhp   -   What steps will reproduce the problem? 1.String Primary Key. 2.Insert the Value manually. 3.When the Primary key inserted with same value which was already there it does not give Duplicate Primary Key exception What is the expected output? What do you see instead? Instead of showing Duplicate Primary Key Violation it Update the Existing Value. What version of the product are you using? On what operating system? GAE 1.2.6 GWT 1.7.1 Windows Vista Eclipse 3.5 Java 1.6 Please provide any additional information below.
    What steps will reproduce the problem? 1.String Primary Key. 2.Insert the Value manually. 3.When the Primary key inserted with same value which was already there it does not give Duplicate Primary Key exception What is the expected output? What do you see instead? Instead of showing Duplicate Primary Key Violation it Update the Existing Value. What version of the product are you using? On what operating system? GAE 1.2.6 GWT 1.7.1 Windows Vista Eclipse 3.5 Java 1.6 Please provide any additional information below.
  • Dec 17, 2009
    issue 22 (Make it clear that @Unique and @Uniques are not supported) commented on by vinayagamhp   -   what is/was the target release date???
    what is/was the target release date???
  • Dec 15, 2009
    issue 172 (Incorrect exception for multiple fields of same type) commented on by itzik...@hotmail.com   -   I had such a need for two lists of objects that extend the same abstract class and I was surprised that it was not supported by app engine (had to workaround that). Glad to see you have fixed that. Going to install new version and check. Thanks Itzik
    I had such a need for two lists of objects that extend the same abstract class and I was surprised that it was not supported by app engine (had to workaround that). Glad to see you have fixed that. Going to install new version and check. Thanks Itzik
  • Dec 15, 2009
    issue 174 (Simultaneous transactions (on the same thread) do not functi...) reported by max.ross   -   Originally posted here: http://code.google.com/p/googleappengine/issues/detail?id=2509
  • Dec 15, 2009
    issue 173 (Requirement to have datanucleus-jpa in CLASSPATH when using ...) reported by andy_jef...@yahoo.com   -   See this thread http://groups.google.com/group/google-appengine-java/browse_thread/thread/d30f39d90b3d37fc The user is using JDO yet seems to have to have datanucleus-jpa.jar (and presumably persistence-api.jar in the CLASSPATH to use JDO. I'd strongly suggest that it ought not to be like this
    See this thread http://groups.google.com/group/google-appengine-java/browse_thread/thread/d30f39d90b3d37fc The user is using JDO yet seems to have to have datanucleus-jpa.jar (and presumably persistence-api.jar in the CLASSPATH to use JDO. I'd strongly suggest that it ought not to be like this
  • Dec 14, 2009
    r435 (take 1.0.4.1 final) committed by max.ross   -   take 1.0.4.1 final
    take 1.0.4.1 final
  • Dec 10, 2009
    issue 60 (Detached objects have SCO fields) commented on by comment.wei   -   I try to change [tempTaskJDO.getQuestionIdList()]'s value. ArrayList<String>questlist = new ArrayList<String>(); questlist.add("1"); questlist.add("2"); tempTaskJDO.setQuestionIdList(questlist); exception is nothing, program normal. before , the QuestionIdList's value is ParentsJDO ("18580476422013912411")/QuestionJDO(1) did the value had errors?
    I try to change [tempTaskJDO.getQuestionIdList()]'s value. ArrayList<String>questlist = new ArrayList<String>(); questlist.add("1"); questlist.add("2"); tempTaskJDO.setQuestionIdList(questlist); exception is nothing, program normal. before , the QuestionIdList's value is ParentsJDO ("18580476422013912411")/QuestionJDO(1) did the value had errors?
  • Dec 10, 2009
    issue 60 (Detached objects have SCO fields) commented on by comment.wei   -   I have the same problemen, can any one help pleas???? public class TaskJDO implements Serializable{ @PrimaryKey @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY) private Key key; @Persistent private String title;; @Persistent private ArrayList<String> questionIdList = null; public TaskJDO() { } public TaskJDO(String title, ArrayList<String> questionIdList) { this.title = title; this.questionIdList = questionIdList; } public Key getKey() { return key; } public String getTitle() { return this.title; } public ArrayList<String> getQuestionIdList() { return this.questionIdList; } public void setKey(Key key) { this.key = key; } public void setTitle(String title) { this.title = title; } public void setQuestionIdList(ArrayList<String> questionIdList) { this.questionIdList = questionIdList; } } package com.wiselife.parents.client.bean; import java.io.Serializable; import java.util.ArrayList; import java.util.List; public class TaskBean implements Serializable { private static final long serialVersionUID = 1L; private String id; // 内容 private String title; private ArrayList<String> questionIdList = null; public TaskBean() { } public TaskBean(String id, String title, ArrayList<String> questionIdList) { this.id = id; this.questionIdList = questionIdList; } public String getId() { return this.id; } public String getTitle() { return this.title; } public ArrayList<String> getQuestionIdList() { return this.questionIdList; } public void setId(String id) { this.id = id; } public void setTitle(String title) { this.title = title; } public void setQuestionIdList(ArrayList<String> questionIdList) { this.questionIdList = questionIdList; } } public TaskBean[] getTasks(String pageNum){ this.setPagenum(pageNum); //开始位置 int startRow = (Integer.parseInt(pageNum)-1)* taskPageSize; //记录位置 int endRow =Integer.parseInt(pageNum)* taskPageSize; Query q = pm.newQuery (TaskJDO.class); q.setRange (startRow,endRow ); List<TaskJDO> tasksJDO = (List<TaskJDO>) q.execute(); TaskBean tasks[] = new TaskBean[tasksJDO.size()]; int i = 0; for(Iterator<TaskJDO> it = tasksJDO.iterator();it.hasNext();i++) { TaskJDO tempTaskJDO = it.next(); TaskBean tempTaskBean = new TaskBean(tempTaskJDO.getKey().toString (), tempTaskJDO.getTitle(), tempTaskJDO.getQuestionIdList()); tasks[i]=tempTaskBean; } return tasks; }
    I have the same problemen, can any one help pleas???? public class TaskJDO implements Serializable{ @PrimaryKey @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY) private Key key; @Persistent private String title;; @Persistent private ArrayList<String> questionIdList = null; public TaskJDO() { } public TaskJDO(String title, ArrayList<String> questionIdList) { this.title = title; this.questionIdList = questionIdList; } public Key getKey() { return key; } public String getTitle() { return this.title; } public ArrayList<String> getQuestionIdList() { return this.questionIdList; } public void setKey(Key key) { this.key = key; } public void setTitle(String title) { this.title = title; } public void setQuestionIdList(ArrayList<String> questionIdList) { this.questionIdList = questionIdList; } } package com.wiselife.parents.client.bean; import java.io.Serializable; import java.util.ArrayList; import java.util.List; public class TaskBean implements Serializable { private static final long serialVersionUID = 1L; private String id; // 内容 private String title; private ArrayList<String> questionIdList = null; public TaskBean() { } public TaskBean(String id, String title, ArrayList<String> questionIdList) { this.id = id; this.questionIdList = questionIdList; } public String getId() { return this.id; } public String getTitle() { return this.title; } public ArrayList<String> getQuestionIdList() { return this.questionIdList; } public void setId(String id) { this.id = id; } public void setTitle(String title) { this.title = title; } public void setQuestionIdList(ArrayList<String> questionIdList) { this.questionIdList = questionIdList; } } public TaskBean[] getTasks(String pageNum){ this.setPagenum(pageNum); //开始位置 int startRow = (Integer.parseInt(pageNum)-1)* taskPageSize; //记录位置 int endRow =Integer.parseInt(pageNum)* taskPageSize; Query q = pm.newQuery (TaskJDO.class); q.setRange (startRow,endRow ); List<TaskJDO> tasksJDO = (List<TaskJDO>) q.execute(); TaskBean tasks[] = new TaskBean[tasksJDO.size()]; int i = 0; for(Iterator<TaskJDO> it = tasksJDO.iterator();it.hasNext();i++) { TaskJDO tempTaskJDO = it.next(); TaskBean tempTaskBean = new TaskBean(tempTaskJDO.getKey().toString (), tempTaskJDO.getTitle(), tempTaskJDO.getQuestionIdList()); tasks[i]=tempTaskBean; } return tasks; }
  • Dec 10, 2009
    issue 60 (Detached objects have SCO fields) commented on by comment.wei   -   I have the same problemen, can any one help pleas????
    I have the same problemen, can any one help pleas????
  • Dec 10, 2009
    appengine-orm-1.0.4.1.RC2.zip (1.0.4.1 RC2 - Inheritance bug fixes, compatible with 1.2.8 S...) file uploaded by max.ross
  • Dec 10, 2009
    r434 (get tests passing) committed by max.ross   -   get tests passing
    get tests passing
  • Dec 10, 2009
    r433 (rc2) committed by max.ross   -   rc2
    rc2
  • Dec 10, 2009
    r432 (rc2 release notes) committed by max.ross   -   rc2 release notes
    rc2 release notes
  • Dec 10, 2009
    r431 (rc2 release notes) committed by max.ross   -   rc2 release notes
    rc2 release notes
  • Dec 10, 2009
    issue 172 (Incorrect exception for multiple fields of same type) Status changed by max.ross   -  
    Status: Fixed
    Status: Fixed
  • Dec 10, 2009
    r430 (rename config property to be consistent with its actual beha...) committed by max.ross   -   rename config property to be consistent with its actual behavior
    rename config property to be consistent with its actual behavior
  • Dec 10, 2009
    r429 (rename config property to be consistent with its actual beha...) committed by max.ross   -   rename config property to be consistent with its actual behavior
    rename config property to be consistent with its actual behavior
  • Dec 10, 2009
    issue 172 (Incorrect exception for multiple fields of same type) commented on by max.ross   -   Oops, the very first example should read "This should _not_ be ok"
    Oops, the very first example should read "This should _not_ be ok"
  • Dec 10, 2009
    issue 172 (Incorrect exception for multiple fields of same type) reported by max.ross   -   This should be ok: class A { List<B> bList; List<B> anotherBList; } Unfortunately I was a little too aggressive with this check, so the following also run afoul of the check: abstract class B {} class C extends B {} class D extends B {} class A { List<C> cList: List<D> dList; }
    This should be ok: class A { List<B> bList; List<B> anotherBList; } Unfortunately I was a little too aggressive with this check, so the following also run afoul of the check: abstract class B {} class C extends B {} class D extends B {} class A { List<C> cList: List<D> dList; }
  • Dec 10, 2009
    appengine-orm-1.0.4.1.RC1.zip (1.0.4.1 RC1) file uploaded by max.ross
  • Dec 10, 2009
    r428 (Update 1.0.4.1 release notes (trunk)) committed by max.ross   -   Update 1.0.4.1 release notes (trunk)
    Update 1.0.4.1 release notes (trunk)
  • Dec 10, 2009
    r427 (Update 1.0.4.1 release notes (branch)) committed by max.ross   -   Update 1.0.4.1 release notes (branch)
    Update 1.0.4.1 release notes (branch)
  • Dec 10, 2009
    issue 171 (Relationships in abstract base classes don't work) Status changed by max.ross   -  
    Status: Fixed
    Status: Fixed
  • Dec 10, 2009
    r426 (Support relationships in abstract base classes http://code....) committed by max.ross   -   Support relationships in abstract base classes http://code.google.com/p/datanucleus-appengine/issues/detail?id=171
    Support relationships in abstract base classes http://code.google.com/p/datanucleus-appengine/issues/detail?id=171
  • Dec 10, 2009
    r425 (Support relationships in abstract base classes http://code....) committed by max.ross   -   Support relationships in abstract base classes http://code.google.com/p/datanucleus-appengine/issues/detail?id=171
    Support relationships in abstract base classes http://code.google.com/p/datanucleus-appengine/issues/detail?id=171
  • Dec 10, 2009
    issue 118 (Raise exception when lhs of contains is not a collection.) Labels changed by max.ross   -  
    Labels: TargetRelease-1.1.0 TargetRelease-1.0.4
    Labels: TargetRelease-1.1.0 TargetRelease-1.0.4
  • Dec 10, 2009
    issue 152 (Version 1.1) Labels changed by max.ross   -  
    Labels: TargetRelease-1.1.0 TargetRelease-1.1
    Labels: TargetRelease-1.1.0 TargetRelease-1.1
  • Dec 10, 2009
    issue 153 (Support polymorphic relationships) Labels changed by max.ross   -  
    Labels: TargetRelease-1.1.0 TargetRelease-1.1
    Labels: TargetRelease-1.1.0 TargetRelease-1.1
  • Dec 10, 2009
    issue 124 (Connection leak when not using txns.) Labels changed by max.ross   -  
    Labels: TargetRelease-1.1.0 TargetRelease-1.0.4
    Labels: TargetRelease-1.1.0 TargetRelease-1.0.4
  • Dec 10, 2009
    r424 (1.0.4.1 release branch) committed by max.ross   -   1.0.4.1 release branch
    1.0.4.1 release branch
  • Dec 09, 2009
    issue 171 (Relationships in abstract base classes don't work) reported by max.ross   -   @PersistenceCapable(identityType = IdentityType.APPLICATION) @Inheritance(strategy = InheritanceStrategy.SUBCLASS_TABLE) public abstract class HasFoo { @PrimaryKey @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY) private Key key; @Persistent @Element(dependent = "true") private List<Foo> fooList = new ArrayList<Foo>(); } @PersistenceCapable(identityType = IdentityType.APPLICATION) public static class Bar extends HasFoo { @Persistent(dependent = "true") Baz baz; } @PersistenceCapable(identityType = IdentityType.APPLICATION) public class Baz extends HasFoo { } @PersistenceCapable(identityType = IdentityType.APPLICATION) public class Foo { @PrimaryKey @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY) private Key key; }
    @PersistenceCapable(identityType = IdentityType.APPLICATION) @Inheritance(strategy = InheritanceStrategy.SUBCLASS_TABLE) public abstract class HasFoo { @PrimaryKey @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY) private Key key; @Persistent @Element(dependent = "true") private List<Foo> fooList = new ArrayList<Foo>(); } @PersistenceCapable(identityType = IdentityType.APPLICATION) public static class Bar extends HasFoo { @Persistent(dependent = "true") Baz baz; } @PersistenceCapable(identityType = IdentityType.APPLICATION) public class Baz extends HasFoo { } @PersistenceCapable(identityType = IdentityType.APPLICATION) public class Foo { @PrimaryKey @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY) private Key key; }
  • Dec 08, 2009
    issue 170 (Detect objects that are owned by multiple types) commented on by max.ross   -   Forgot to say that the fix is to throw a useful exception.
    Forgot to say that the fix is to throw a useful exception.
  • Dec 08, 2009
    issue 170 (Detect objects that are owned by multiple types) reported by max.ross   -   A type can only have a single owner, so this should be illegal: @PersistenceCapable(identityType = IdentityType.APPLICATION) public static class RatePlan { @PrimaryKey @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY) private Key id; } @PersistenceCapable(identityType = IdentityType.APPLICATION) public static class Activity { @PrimaryKey @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY) private Key id; @Persistent private List<RatePlan> ratePlans = new ArrayList<RatePlan>(); } @PersistenceCapable(identityType = IdentityType.APPLICATION) public static class Bundle { @PrimaryKey @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY) private Key id; @Persistent private RatePlan ratePlan; public void setRatePlan(RatePlan ratePlan) { this.ratePlan = ratePlan; } } Right now we throw a really cryptic exception: public void testBryce() { switchDatasource(PersistenceManagerFactoryName.nontransactional); pm.newQuery(Activity.class).execute(); Bundle bundle = new Bundle(); bundle.setRatePlan(new RatePlan()); pm.makePersistent(bundle); } java.lang.ClassCastException: oid is not instanceof javax.jdo.identity.ObjectIdentity at org.datanucleus.test.Bryce$RatePlan.jdoCopyKeyFieldsFromObjectId(Bryce.j ava) at org.datanucleus.store.mapped.mapping.PersistenceCapableMapping.setObj ectAsValue(PersistenceCapableMapping.java:657) at org.datanucleus.store.mapped.mapping.PersistenceCapableMapping.setObj ect(PersistenceCapableMapping.java:364) at org.datanucleus.store.appengine.DatastoreRelationFieldManager$1.setObje ctViaMapping(DatastoreRelationFieldManager.java:131) at org.datanucleus.store.appengine.DatastoreRelationFieldManager$1.apply(D atastoreRelationFieldManager.java:107) at org.datanucleus.store.appengine.DatastoreRelationFieldManager.storeRelat ions(DatastoreRelationFieldManager.java:79) at org.datanucleus.store.appengine.DatastoreFieldManager.storeRelations(Dat astoreFieldManager.java:812) at org.datanucleus.store.appengine.DatastorePersistenceHandler.insertPostPr ocess(DatastorePersistenceHandler.java:288) at org.datanucleus.store.appengine.DatastorePersistenceHandler.insertObject s(DatastorePersistenceHandler.java:241) at org.datanucleus.store.appengine.DatastorePersistenceHandler.insertObject( DatastorePersistenceHandler.java:225) at org.datanucleus.state.JDOStateManagerImpl.internalMakePersistent(JDOStat eManagerImpl.java:3185) at org.datanucleus.state.JDOStateManagerImpl.makePersistent(JDOStateManag erImpl.java:3161) at org.datanucleus.ObjectManagerImpl.persistObjectInternal(ObjectManagerI mpl.java:1298) at org.datanucleus.ObjectManagerImpl.persistObject(ObjectManagerImpl.java: 1175) at org.datanucleus.jdo.JDOPersistenceManager.jdoMakePersistent(JDOPersiste nceManager.java:669) at org.datanucleus.jdo.JDOPersistenceManager.makePersistent(JDOPersistence Manager.java:694)
    A type can only have a single owner, so this should be illegal: @PersistenceCapable(identityType = IdentityType.APPLICATION) public static class RatePlan { @PrimaryKey @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY) private Key id; } @PersistenceCapable(identityType = IdentityType.APPLICATION) public static class Activity { @PrimaryKey @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY) private Key id; @Persistent private List<RatePlan> ratePlans = new ArrayList<RatePlan>(); } @PersistenceCapable(identityType = IdentityType.APPLICATION) public static class Bundle { @PrimaryKey @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY) private Key id; @Persistent private RatePlan ratePlan; public void setRatePlan(RatePlan ratePlan) { this.ratePlan = ratePlan; } } Right now we throw a really cryptic exception: public void testBryce() { switchDatasource(PersistenceManagerFactoryName.nontransactional); pm.newQuery(Activity.class).execute(); Bundle bundle = new Bundle(); bundle.setRatePlan(new RatePlan()); pm.makePersistent(bundle); } java.lang.ClassCastException: oid is not instanceof javax.jdo.identity.ObjectIdentity at org.datanucleus.test.Bryce$RatePlan.jdoCopyKeyFieldsFromObjectId(Bryce.j ava) at org.datanucleus.store.mapped.mapping.PersistenceCapableMapping.setObj ectAsValue(PersistenceCapableMapping.java:657) at org.datanucleus.store.mapped.mapping.PersistenceCapableMapping.setObj ect(PersistenceCapableMapping.java:364) at org.datanucleus.store.appengine.DatastoreRelationFieldManager$1.setObje ctViaMapping(DatastoreRelationFieldManager.java:131) at org.datanucleus.store.appengine.DatastoreRelationFieldManager$1.apply(D atastoreRelationFieldManager.java:107) at org.datanucleus.store.appengine.DatastoreRelationFieldManager.storeRelat ions(DatastoreRelationFieldManager.java:79) at org.datanucleus.store.appengine.DatastoreFieldManager.storeRelations(Dat astoreFieldManager.java:812) at org.datanucleus.store.appengine.DatastorePersistenceHandler.insertPostPr ocess(DatastorePersistenceHandler.java:288) at org.datanucleus.store.appengine.DatastorePersistenceHandler.insertObject s(DatastorePersistenceHandler.java:241) at org.datanucleus.store.appengine.DatastorePersistenceHandler.insertObject( DatastorePersistenceHandler.java:225) at org.datanucleus.state.JDOStateManagerImpl.internalMakePersistent(JDOStat eManagerImpl.java:3185) at org.datanucleus.state.JDOStateManagerImpl.makePersistent(JDOStateManag erImpl.java:3161) at org.datanucleus.ObjectManagerImpl.persistObjectInternal(ObjectManagerI mpl.java:1298) at org.datanucleus.ObjectManagerImpl.persistObject(ObjectManagerImpl.java: 1175) at org.datanucleus.jdo.JDOPersistenceManager.jdoMakePersistent(JDOPersiste nceManager.java:669) at org.datanucleus.jdo.JDOPersistenceManager.makePersistent(JDOPersistence Manager.java:694)
  • Dec 08, 2009
    issue 169 (Non-persistent base classes do not work) Status changed by max.ross   -  
    Status: Fixed
    Status: Fixed
  • Dec 08, 2009
    r423 (Support non-persistent base classes http://code.google.com/...) committed by max.ross   -   Support non-persistent base classes http://code.google.com/p/datanucleus-appengine/issues/detail?id=169
  • Dec 08, 2009
    r422 (Support non-persistent base classes http://code.google.com/...) committed by max.ross   -   Support non-persistent base classes http://code.google.com/p/datanucleus-appengine/issues/detail?id=169