Defining the order of a list

后端 未结 5 1493
醉酒成梦
醉酒成梦 2020-12-11 16:32

I have the following problem. I have three classes, A, B and C. A contains a OneToMany relationed list of B:s. B contains a ManyToOne relation to C. C contains a field calle

相关标签:
5条回答
  • 2020-12-11 16:47

    ChssPly76 is right.

    What you could do is to create a named query like this one:

     SELECT b 
     FROM B b 
     WHERE b.a = :mya 
     ORDER BY b.c.name
    
    0 讨论(0)
  • 2020-12-11 16:47

    Have you tried @OrderBy("c.name", "name") ?

    You shouldn't use "b." because it's implied that the @OrderBy will be done on columns of the instances of B on the b array.

    0 讨论(0)
  • 2020-12-11 17:00

    It's NOT possible. @OrderBy only accepts direct property / field names, not nested properties. Which makes sense, really, because "c" table - depending on your fetching strategy may not even be part of a select issued to retrieve your "b"s.

    0 讨论(0)
  • 2020-12-11 17:02

    It is not possible in javax.persistence.OrderBy (as say ChssPly76 ), but when I was using Hibernate I construct new column in PLAIN SQL with Formula() annotation and then OrderBy over it:

    class A {
       @OneToMany
       @OrderBy("orderCol") <---- reference to virtual column
       List<B> b;
    }
    
    class B {
       @ManyToOne
       C c;
       String name;
    
       @org.hibernate.annotations.Formula(
         "( select C_table.name as orderCol from C_table where C_table.id = id )"
       ) <------------------------------------------ join with plain SQL statment
       String orderCol;
    }
    

    May be EclipseLink has same possibilities?

    0 讨论(0)
  • 2020-12-11 17:03

    Have you tried:

     @OrderBy("c.name ASC", "name ASC")
    

    ?

    0 讨论(0)
提交回复
热议问题