With the follwing
result map using a list property "contact" works perfectly and always returns a
single value as expected.
However if I use an
object property "primaryContact" I get the following error.
--- The error
occurred in
com/tms/ede/server/persistance/dao/sqlmapdao/sourcesmaps/maps/EDEProgservMap.xml.
--- The error occurred while applying a result map.
--- Check the EDEProgservRSMap_Primary.
--- Check the result mapping for the 'primaryContact' property.
--- Cause: java.sql.SQLException: Error: executeQueryForObject returned too many results.
Caused by: java.sql.SQLException: Error: executeQueryForObject returned too many results.
--- The error occurred while applying a result map.
--- Check the EDEProgservRSMap_Primary.
--- Check the result mapping for the 'primaryContact' property.
--- Cause: java.sql.SQLException: Error: executeQueryForObject returned too many results.
Caused by: java.sql.SQLException: Error: executeQueryForObject returned too many results.
I can't understand
what's going on here. I always get a single value in the returned list which is
what I want but if I use the
same query with a
query for object I get an error.
Heres the
resultmap
<resultMap
id="EDEProgservRSMap_Primary"
class="com.tms.ede.server.persistance.dao.sqlmapdao.sourcesmaps.vo.EDEProgservVO">
<result property="id" column="progserv_id"/>
<result property="statusId" column="progserv_status_id"/>
<result property="sourceId" column="source_id"/>
<result property="curTmsCallSign" column="call_sign_text"/>
<result property="sourceName" column="source_name"/>
<result property="finderText" column="source_finder_text"/>
<!--result property="contacts" column="source_id" select="getPrimaryContactVOBy_SourceId_PrimaryOnly"/-->
<result property="primaryContact" column="source_id" select="getPrimaryContactVOBy_SourceId_PrimaryOnly"/>
</resultMap>
<result property="id" column="progserv_id"/>
<result property="statusId" column="progserv_status_id"/>
<result property="sourceId" column="source_id"/>
<result property="curTmsCallSign" column="call_sign_text"/>
<result property="sourceName" column="source_name"/>
<result property="finderText" column="source_finder_text"/>
<!--result property="contacts" column="source_id" select="getPrimaryContactVOBy_SourceId_PrimaryOnly"/-->
<result property="primaryContact" column="source_id" select="getPrimaryContactVOBy_SourceId_PrimaryOnly"/>
</resultMap>
Here's the sql
map...
<statement
id="getPrimaryContactVOBy_SourceId_PrimaryOnly"
parameterClass="java.lang.Long"
resultClass="com.tms.ede.server.persistance.dao.sqlmapdao.sourcesmaps.vo.PrimaryContactVO"
resultMap="PrimaryContactRSMap"
>
parameterClass="java.lang.Long"
resultClass="com.tms.ede.server.persistance.dao.sqlmapdao.sourcesmaps.vo.PrimaryContactVO"
resultMap="PrimaryContactRSMap"
>
SELECT
source.source_id,
source_contact.contact_group_owner_id,
source_contact_group.contact_id,
contact.contact_type_id,
contact.first_name,
contact.last_name,
contact.job_title,
contact.email_address,
contact.department
FROM
source,
source_contact,
source_contact_group,
contact
WHERE
source.source_id = #value#
AND
source.source_id=source_contact.source_id
AND
source_contact.contact_group_owner_id=source_contact_group.contact_group_owner_id
AND
source_contact_group.contact_id=contact.contact_id
AND
contact.contact_type_id = 57
</statement>
source.source_id,
source_contact.contact_group_owner_id,
source_contact_group.contact_id,
contact.contact_type_id,
contact.first_name,
contact.last_name,
contact.job_title,
contact.email_address,
contact.department
FROM
source,
source_contact,
source_contact_group,
contact
WHERE
source.source_id = #value#
AND
source.source_id=source_contact.source_id
AND
source_contact.contact_group_owner_id=source_contact_group.contact_group_owner_id
AND
source_contact_group.contact_id=contact.contact_id
AND
contact.contact_type_id = 57
</statement>