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 我的测试通过但当我取消评论它时,我得到 table infotype_validations can't be found。我查看了在线可用的文档,似乎完全有可能在这种映射中使用@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 回答