Как вы определяете предложение OrderBy в двух столбцах - PullRequest
7 голосов
/ 18 октября 2010

Мы хотели бы заказать 2 колонки в интерфейсе Seam EntityQuery, а также модель JPA. Как мы это делаем?

@Entity
public class A{

@OrderBy(???) // should this be hardcoded here, is it database agnostic
List<B> bobjects;
}

@Entity
public class B {

   public short startTimeHrs;
   public short startTimeMins;
}

@Name("bList")
public class B extends EntityQuery {
        setOrderColumn("startTimeHrs, startTimeMins"); // Is this correct?
        setOrderDirection("asc");
}

Ответы [ 2 ]

13 голосов
/ 18 октября 2010

Да, вы можете использовать @OrderBy для заказа ваших запросов.

@OrderBy("startTimeHrs, startTimeMins")
@OneToMany(...)
getBobjects() {
   return bobjects;
}

Теперь, когда вы говорите A.getBobjects(), они будут заказаны. Однако, если вы используете EntityQuery для получения результата, вы можете переопределить getEjbql() и разместить там порядок.

@Name("bList")
public class B extends EntityQuery {
    @Override
    public String getEjbql() {
          return "select b from B b order by startTimeHrs, startTimeMins";
    }
}

Или вы можете @Override getResultList() манипулировать коллекцией в ваших списках сущностей

11 голосов
/ 18 октября 2010

Если вы говорите о javax.persistence.OrderBy, эта аннотация принимает в качестве параметра список свойств, разделенных запятыми (целевого объекта), и упорядочивает коллекцию соответствующим образом. Например, в вашем случае, startTimeHrs asc, startTimeMins asc.

Из спецификации JPA 1.0:

9.1.28 OrderBy Аннотация

Аннотация OrderBy указывает упорядочение элементов коллекция ценной ассоциации на точка, когда ассоциация получен.

@Target({METHOD, FIELD}) @Retention(RUNTIME)
public @interface OrderBy {
String value() default "";
}

Синтаксис упорядочения значений Элемент представляет собой orderby_list, как следующим образом:

orderby_list::= orderby_item [,orderby_item]*
orderby_item::= property_or_field_name [ASC | DESC]

Если ASC или DESC не указано, ASC (в порядке возрастания) предполагается.

Если элемент заказа не указан, упорядочение по первичному ключу предполагаемой сущности.

Имя свойства или поля должно соответствуют тому из постоянного свойство или поле связанного учебный класс. Используемые свойства или поля в заказе должны соответствовать столбцы для которых операторы сравнения поддерживаются.

...