考虑以下带有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;
}我的意图是在数据库中有一个jointable,并且每次在我的服务中调用getValidation()时,都会返回按validation_id排序的记录。现在为了测试我的功能,我使用了DbUnit。每次启动测试类时,都会创建数据库,hibernate会创建表,之后DbUnit会用数据填充这些表。当我注释@OrderBy时,我的测试通过了,但当我取消注释它时,我得到表infotype_validations无法找到。我已经在线查看了可用的文档,似乎在这种映射中使用@OrderBy是完全可能的。那么我错过了什么呢?
发布于 2013-01-12 23:27:47
您需要使用字段名,而不是列名。
//Assuming the field is validationId
@OrderBy(value="validationId desc")
public Set<Validation> getValidation() {
return validation;
}还要确保数据库中存在infotype_validations表,并且拼写匹配。
https://stackoverflow.com/questions/14294712
复制相似问题