Hibernate中的@OrderBy注释不起作用

时间:2014-09-03 14:06:34

标签: java hibernate jpa

    import org.hibernate.annotations.OrderBy;   
    import javax.persistence.Column;
    import javax.persistence.Entity;

     public class A implements Serializable 
        {
            @Id
            @Column(name="SNR")
            private long ASnr;

            @OneToMany(fetch=FetchType.EAGER)
            @JoinColumn(name="B")
            private Set<B> bset;

            public Set<B> getB() {
                return this.bset;
            }

            @OrderBy(clause="bsnr DESC")
            public void setB(Set<B> bset) {
                this.bset = bset;
            }
        }

        public class B implements Serializable 
        {
            @Id
            @Column(name="BSNR")
            private long bsnr;

             public long getBsnr() {
                return this.bsnr;
            }

            public void setBsnr(long bsnr) {
                this.bsnr= bsnr;
            }
        }

对于上面的代码,@OrderBy无效。当我尝试进行hibernate查询时,只有select查询显示在控制台上,并且sql查询中没有order by子句。我留下了什么或写得不正确吗?

2 个答案:

答案 0 :(得分:1)

你已经用过了

 import org.hibernate.annotations.OrderBy;

你试过

吗?
import javax.persistence.OrderBy;

@OrderBy("bsnr")

我认为你误解了@Orderby注释实际上做了什么。根据javadoc:

  

指定值集合的元素的顺序   关联或关联时的关联或元素集合   收集集合。

The annotation does not dictate insertion order

尝试添加属性或getter

答案 1 :(得分:0)

我在类路径中添加了antlr-2.7.7.jar,并在代码中使用了javax.persistence.OrderBy。现在它完美无缺。