Hibernate:排序ManyToMany映射

时间:2013-01-12 15:19:29

标签: java hibernate jpa dbunit

考虑使用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。那我错过了什么?

1 个答案:

答案 0 :(得分:3)

您需要使用字段名称而不是列名。

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

还要确保数据库中存在infotype_validations表并且拼写匹配。