[ 
https://issues.apache.org/jira/browse/OPENJPA-238?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12496016
 ] 

Abe White commented on OPENJPA-238:
-----------------------------------

Custom id classes can have either a (Class,String) or just a String 
constructor.  So the patch can't just assume a (Class,String) constructor -- it 
has to check to see what the class has.  That's pretty ugly and still won't 
cover certain cases, but it'll work for this user and previous users.

If we really want to make a proper solution, we'd write out the class of the 
entity and the stringified oid instead of the class of the oid and the 
stringified oid.  Then in fromXMLString we'd check to see if relMeta uses 
datastore identity and if so construct a LongId from the stored entity class 
and string.  If not we'd use PCRegistry.newObjectId(Class,String).  We'd also 
need the old processing for old XML files... we could detect an old file by 
maybe adding a new version attribute to the top-level <extent> element -- old 
files will be missing the version attribute.

> Error in XMLFileHandler, failed to load field element with type 
> org.apace.openjpa.util.StringId.
> ------------------------------------------------------------------------------------------------
>
>                 Key: OPENJPA-238
>                 URL: https://issues.apache.org/jira/browse/OPENJPA-238
>             Project: OpenJPA
>          Issue Type: Bug
>          Components: xml store
>            Reporter: Catalina Wei
>         Attachments: XMLFileHandler.java.patch
>
>
> Problem reported by Ngo, Anh (full description with attachments can be found 
> in openjpa-dev mails, subject title: xml store help?
> In evaluating openJPA to use for our current project.  It works fine for our 
> need with database.  But I am having problem with the XMLStoreManager.  I 
> have two simple objects - Customer and User.  Customer can have multiple 
> users.  I look at the object store in xml file.  It stored like this:
>  
> <?xml version="1.0" encoding="UTF-8"?>
> <extent>
>     <object class="net.iss.mss.jpa.examples.remedy.Customer" oid="1" 
> version="0">
>         <field name="customerId">
>             "1"
>         </field>
>         <field name="customerName">
>             "customer1"
>         </field>
>         <field name="users">
>             <element>
>                 org.apache.openjpa.util.StringId:1
>             </element>
>             <element>
>                 org.apache.openjpa.util.StringId:2
>             </element>
>         </field>
>     </object>
> </extent>
>  
> Shoud the Users element store User object?  The XMLStoreManager failed to 
> load data in because it doest not know how to create this object:             
>    org.apache.openjpa.util.StringId:1
>  
> Please help...

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to