3

JPAアノテーションを使用した次のマッピングを検討してください

@ManyToMany(cascade = { CascadeType.ALL })
@JoinTable(name = "infotype_validations", 
    joinColumns = { @JoinColumn(name = "info_type_id") }, 
    inverseJoinColumns = { @JoinColumn(name = "validation_id") }
)
@OrderBy(value="validation_id desc")
public Set<Validation> getValidation() {
    return validation;
}

私の意図は、データベースに結合可能であり、サービスでgetValidation()が呼び出されるたびに、validation_idの順序でレコードが返されることです。ここで、機能をテストするために、DbUnitを使用します。テストクラスを開始するたびに、データベースが作成され、hibernateがテーブルを作成します。その後、DbUnitがテーブルにデータを入力します。@OrderByにコメントすると、テストに合格しますが、コメントを外すと、テーブルinfotype_validationsが見つかりません。オンラインで入手可能なドキュメントを調べましたが、この種のマッピングで@OrderByを使用することは完全に可能であるようです。だから私は何が欠けていますか?

4

1 に答える 1

3

列名ではなくフィールド名を使用する必要があります。

//Assuming the field is validationId
@OrderBy(value="validationId desc")
public Set<Validation> getValidation() {
    return validation;
}

また、infotype_validationsテーブルがデータベース内に存在し、スペルが一致していることを確認してください。

于 2013-01-12T15:27:46.717 に答える