wierd sql generated by container for cmr-field (1-*)
rdoust Nov 1, 2004 4:51 PMI'd appreciate it if anyone could look at this for a minute and tell me if they see any reason why the Region.getZones() method (container generated) should throw an exception due to malformed SQL which looks like the following:
2004-11-01 16:27:25,615 DEBUG [org.jboss.ejb.plugins.cmp.jdbc.JDBCLoadRelationCommand.Region] Executing SQL: SELECT REGIONCODE, FROM administrator.REGION_ZONES WHERE (REGIONCODE=?) OR (REGIONCODE=?) OR (REGIONCODE=?)
2004-11-01 16:27:25,822 ERROR [org.jboss.ejb.plugins.LogInterceptor] TransactionRolledbackLocalException in method: public abstract java.util.Set com.nym.entity.region.RegionLocal.getZones() throws javax.ejb.EJBException, causedBy:
COM.ibm.db2.jdbc.DB2Exception: [IBM][CLI Driver][DB2/NT] SQL0104N An unexpected token "." was found following "FROM administrator". Expected tokens may include: "FROM". SQLSTATE=42601
I'm using jboss 3.2.3. I have configurated many one-to-many relationships successfully, but this one is kicking my ass. (I think this is the only one I have where the entity on the many side has a primary key comprised of multiple columns.)
ejb-jar.xml:
.
.
.
<ejb-name>Region</ejb-name>
<local-home>com.foo.entity.region.RegionLocalHome</local-home>
com.foo.entity.region.RegionLocal
<ejb-class>com.foo.entity.region.ejb.RegionBean</ejb-class>
<persistence-type>Container</persistence-type>
<prim-key-class>java.lang.Integer</prim-key-class>
False
<abstract-schema-name>Region</abstract-schema-name>
<cmp-field>
<field-name>regionCode</field-name>
</cmp-field>
<cmp-field>
<field-name>officeName</field-name>
</cmp-field>
<primkey-field>regionCode</primkey-field>
Get all regions
<query-method>
<method-name>findAll</method-name>
<method-params/>
</query-method>
<ejb-ql>SELECT OBJECT(r) FROM Region AS r</ejb-ql>
<ejb-name>RegionZone</ejb-name>
<local-home>com.foo.entity.regionZone.RegionZoneLocalHome</local-home>
com.foo.entity.regionZone.RegionZoneLocal
<ejb-class>com.foo.entity.regionZone.ejb.RegionZoneBean</ejb-class>
<persistence-type>Container</persistence-type>
<prim-key-class>com.foo.entity.regionZone.RegionZonePK</prim-key-class>
False
<abstract-schema-name>RegionZone</abstract-schema-name>
<cmp-field>
<field-name>attribute</field-name>
</cmp-field>
<cmp-field>
<field-name>matchExpression</field-name>
</cmp-field>
<cmp-field>
<field-name>accessor</field-name>
</cmp-field>
.
.
.
<ejb-relation>
<ejb-relation-name>Region-RegionZone</ejb-relation-name>
<ejb-relationship-role>
<ejb-relationship-role-name>Region-Has-Many-Zones</ejb-relationship-role-name>
One
<relationship-role-source>
<ejb-name>Region</ejb-name>
</relationship-role-source>
<cmr-field>
<cmr-field-name>zones</cmr-field-name>
<cmr-field-type>java.util.Set</cmr-field-type>
</cmr-field>
</ejb-relationship-role>
<ejb-relationship-role>
<ejb-relationship-role-name>Zone-in-One-Region</ejb-relationship-role-name>
Many
<relationship-role-source>
<ejb-name>RegionZone</ejb-name>
</relationship-role-source>
<cmr-field>
<cmr-field-name>region</cmr-field-name>
</cmr-field>
</ejb-relationship-role>
</ejb-relation>
jbosscmp-jdbc.xml:
<ejb-name>Region</ejb-name>
<table-name>administrator.REGIONS</table-name>
<cmp-field>
<field-name>regionCode</field-name>
<column-name>REGIONCODE</column-name>
</cmp-field>
<cmp-field>
<field-name>officeName</field-name>
<column-name>OFFICENAME</column-name>
</cmp-field>
<ejb-name>RegionZone</ejb-name>
<table-name>administrator.REGION_ZONES</table-name>
<cmp-field>
<field-name>attribute</field-name>
<column-name>ATTRIBUTE</column-name>
</cmp-field>
<cmp-field>
<field-name>matchExpression</field-name>
<column-name>MATCHEXPRESSION</column-name>
</cmp-field>
<cmp-field>
<field-name>accessor</field-name>
<column-name>ACCESSOR</column-name>
</cmp-field>
.
.
.
<ejb-relation>
<ejb-relation-name>Region-RegionZone</ejb-relation-name>
<foreign-key-mapping/>
<ejb-relationship-role>
<ejb-relationship-role-name>Region-Has-Many-Zones</ejb-relationship-role-name>
<key-fields>
<key-field>
<field-name>regionCode</field-name>
<column-name>REGIONCODE</column-name>
</key-field>
</key-fields>
</ejb-relationship-role>
<ejb-relationship-role>
<ejb-relationship-role-name>Zone-in-One-Region</ejb-relationship-role-name>
<key-fields/>
</ejb-relationship-role>
</ejb-relation>
.
.
.