Hi, I'm trying to populate a field of array type using apache-openjpa-1.0.2.
The entity classes are autogenerated by Axis wsdl2java so I cannot modify
them or add annotations. I can only register custom field mappings through
orm.xml or persistence.xml. Here is an example with the Java classes and
orm.xml:


Java:

public class Battery {
        private int batteryId;
        private int siteId;
        // .. other fields
}

public class SiteInfo {
        private int siteInfoId;
        private Battery[] batteries;    
        // .. other fields

        public Battery[] getBatteries() {
                return batteries;
        }

        public void setBatteries(Battery[] batteries) {
                this.batteries = batteries;
        }
}


ORM.XML:

<entity name="Battery" class="Battery">         
        <table name="battery" />                                
        <attributes>
                <id name="batteryId">
                        <column name="battery_id"/>
                </id>                   
                <basic name="siteId">
                        <column name="site_id" />
                </basic>                                                        
        
        </attributes>           
</entity>

<entity class="SiteInfo" name="SiteInfo">
        <table name="site_info" />                              
                
        <attributes>
                <id name="siteInfoId">
                        <column name="site_info_id" />
                </id>
                        
                <one-to-many name="batteries">                  
                        <join-column name="site_id" 
referenced-column-name="site_info_id" />
                </one-to-many>
        </attributes>
</entity>
</pre>

I verified that 2 JPQL queries are executed, one for parent entity and one
for child entity with a join to parent entity:

SELECT t0.site_info_id, t0.county, t0.state FROM site_info t0 WHERE
(t0.county = ? AND t0.state = ?)

SELECT t0.site_info_id, t1.site_id FROM site_info t0, battery t1 WHERE
(t0.county = ? AND t0.state = ?) AND t0.site_info_id = t1.site_id

I get the result as a list of SiteInfo objects. When calling getBatteries()
on any SiteInfo object its always returning null. I'm guessing Apache
OpenJPA expects Collection types for one-to-many relationships. What is the
simplest way to populate a field of array types using OpenJPA?
-- 
View this message in context: 
http://n2.nabble.com/one-to-many-relation-with-array-types-tp679759p679759.html
Sent from the OpenJPA Users mailing list archive at Nabble.com.

Reply via email to