2011-04-12 18 views
2

私は複数の子(paysteps)を持つhibernateエンティティ(paygrade)を持っており、これらの子をアプリで照会しようとしています。残念ながら、私はクエリの最初のレコードを取得することしかできません。クエリがデータベースから9件の結果を返しますが、唯一のこれまで冬眠Hibernateの1対多が完全な結果セットを返さない

Hibernate: 
/* load one-to-many ...Paygrade.paygradeSteps */ select 
    paygradest0_.grade_code as grade1_38_1_, 
    paygradest0_.grade_code as grade1_1_, 
    paygradest0_.scale_code as scale2_1_, 
    paygradest0_.grade_code as grade1_39_0_, 
    paygradest0_.scale_code as scale2_39_0_, 
    paygradest0_.grade_name as grade3_39_0_, 
    paygradest0_.scale_name as scale4_39_0_, 
    paygradest0_.scale_point as scale5_39_0_, 
    paygradest0_.scale_value as scale6_39_0_ 
from 
    tv_grade_point paygradest0_ 
where 
    paygradest0_.grade_code= 'Grade 9' 

:ここでは実体

public class Paygrade extends Persistent { 

    @Id 
    @Column(length = 80, updatable=false) 
    private String code; 

    @Column(length = 80, updatable=false) 
    private String name; 

    @OneToMany(mappedBy = "paygrade", fetch = FetchType.LAZY) 
    @ForeignKey(name = "none") 
    private Set<Paystep> paygradeSteps = new HashSet<Paystep>(); 

    // getters and setters 
} 


@IdClass(PaystepPK.class) 
public class Paystep { 

    @Id 
    @Column(length = 80, updatable=false) 
    protected String gradeCode; 

    @Column(length = 80, updatable=false) 
    protected String gradeName; 

    @Id 
    @Column(length = 80, updatable=false) 
    protected String scaleCode; 

    @Column(length = 80, updatable=false) 
    protected String scaleName; 

    @Column(length = 80, updatable=false) 
    protected String scalePoint; 

    @Column(updatable=false) 
    protected Long scaleValue; 

    @ManyToOne 
    @ForeignKey(name = "none") 
    @JoinColumn (name="grade_code", updatable = false, insertable = false) 
    private Paygrade paygrade; 

    // getters and setters 

} 

は、以下のクエリがpaygradeインスタンスの休止getPaygradeStepsを呼び出すとき()メソッドによって呼び出されます最初のレコードを取得します。私はpaystepの複合キー(レガシーデータベースでhibernateを使用している場合の危険性)と関連があると想定しています。

誰もこの動作がポップアップした理由を知っていますか?

答えて

0

OneToMany参照に結合列"grade_code"を指定して逆にする必要があります。

ところで、質問のSQLクエリは、Paystepではなくtv_grade_pointを取得しています。

関連する問題