【问题标题】:Hibernate : Sorting ManyToMany mappingHibernate:对多对多映射进行排序
【发布时间】:2013-01-12 15:19:29
【问题描述】:

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

【问题讨论】:

    标签: java hibernate jpa dbunit


    【解决方案1】:

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

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

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

    【讨论】:

    • 啊对,我非常关注@joinColumn 映射,但我忘记了显而易见的......事情是我从 MappedSuperClass 继承,所以我所有的 Id 列都只是 id 属性。我不确定这是否适合用来知道要对哪个表的 id 进行排序......现在一切正常 thnx
    • @kenny 很棒的东西。我作弊以为我检查了我的一个例子。祝你好运。
    猜你喜欢
    • 2011-06-20
    • 2017-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多