Take the 2-minute tour ×

I am using springframework HibernateTemplate to query a single table. Using debug settings I have captured the query that Hibernate is generating, run it in Toad, and gotten 75 distinct rows. However in my application I get a collection with 75 duplicate records and nothing else.

The mapping is as simple as it gets:

<class name="com.p.e.d.s.PmaSummary" <!-- hiding info -->
    table="V_PMA_SUMMARY" schema="ECREDIT">

    <cache usage="read-only" />

    <id column="member_id" name="memberId">
        <generator class="assigned" />

    <property name="weekEnding" column="week_ending" />
    <property name="actualInvoice" column="actual_invoice" />
    <property name="ftrAdjustments" column="ftr_adjustments" />
    <property name="edcLseAdjustments" column="edc_lse_adjustments" />
    <property name="blidAdjustments" column="blid_adjustments" />
    <property name="pmaMiscAdjustments" column="pma_misc_adjustments" />
    <property name="pmaEarlyPayments" column="pma_early_payments" />
    <property name="adjInv" column="adj_inv" />
    <property name="adjInvExcEarlyPayment" column="adj_inv_exc_early_payment" />
    <property name="initialPma" column="initial_pma" />
    <property name="threeWeekPma" column="three_week_pma" />
    <property name="pmaOverride" column="pma_override" />
    <property name="pmaOverride_type" column="pma_override_type" />
    <property name="pmaOverride_reason" column="pma_override_reason" />

And this generated query works correctly in Toad:

select this_.member_id as member1_45_0_,
     this_.week_ending as week2_45_0_,
     this_.actual_invoice as actual3_45_0_,
     this_.ftr_adjustments as ftr4_45_0_,
     this_.edc_lse_adjustments as edc5_45_0_,
     this_.blid_adjustments as blid6_45_0_,
     this_.pma_misc_adjustments as pma7_45_0_,
     this_.pma_early_payments as pma8_45_0_,
     this_.adj_inv as adj9_45_0_,
     this_.adj_inv_exc_early_payment as adj10_45_0_,
     this_.initial_pma as initial11_45_0_,
     this_.three_week_pma as three12_45_0_,
     this_.pma_override as pma13_45_0_,
     this_.pma_override_type as pma14_45_0_,
     this_.pma_override_reason as pma15_45_0_
from ecredit.v_pma_summary this_
where this_.member_id = 10003
order by this_.week_ending desc;
share|improve this question
I discovered the issue: this table has a composite key. Changing from the single property to two properties in a composite-key resolved the issue. –  Neil Hornbeck May 31 '12 at 12:21
add comment

2 Answers

Why not add DISTINCT to your HQL query?

share|improve this answer
add comment

The id definition in your mapping file is not correct. With <ìd> you define a single column as the primary key.

In the select you select all rows for one member_id and order them by week_ending. So I guess there can be many columns with different week_ending for the same member_id. So your primary key probably has two or more columns, member_id and week_ending and perhaps sth. else.

You have to use <composite-id> instead <id>, sth. like this

    <key-property name="memberId" column="member_id" type="..." /> 
    <key-property name="weekEnding" column="week_ending" type="..." />
    <!--- perhaps more key-properties --> 
share|improve this answer
add comment

Your Answer


