У меня есть отображение как это:
@ManyToMany(cascade = CascadeType.PERSIST)
@JoinTable(
name="product_product_catalog",
joinColumns={@JoinColumn(name="product_catalog", referencedColumnName="product_catalog")},
inverseJoinColumns={@JoinColumn(name="product", referencedColumnName="product")})
public List<Product> products = new ArrayList<Product>();
Я могу выбрать продукты для каталога приятно, но я не могу (динамично) заказать продукты. Как я мог заказать им? Я, вероятно, должен записать many-many HQL запрос с порядком - пунктом? Я, хотя из передачи orderBy строки имени поля к запросу, или там лучшее решение?
Таблицы: продукты, product_catalog, product_product_catalog (ассоциативная таблица)
P.S. Используя Игру! Платформа JPASupport для моих объектов.
Я могу получить продукты для каталога, но я не могу (динамически) заказать продукты. Как я могу их заказать?
Невозможно, если вы позволите JPA получить ассоциацию. Сопоставления статичны, лучшее, что вы можете сделать с сопоставлениями, это указать порядок во "время получения":
9.1.28 Аннотация OrderBy
Аннотация
OrderBy
определяет порядок элементов ассоциации, оцененной коллекцией, в момент получения ассоциации.@Target({METHOD, FIELD}) @Retention(RUNTIME) public @interface OrderBy { String value() по умолчанию ""; }
Синтаксис элемента упорядочивания значения элемента является orderby_list, как следующим образом:
orderby_list::= orderby_item [,orderby_item]* orderby_item::= property_or_field_name [ASC | DESC]
Если ASC или DESC не указаны, предполагается ASC (порядок возрастания).
Если элемент упорядочивания не указан, предполагается упорядочивание по первичному ключу связанной сущности.
Имя свойства или поля должно соответствовать имени постоянного свойства или поля ассоциированного класса. Свойства или поля, используемые в упорядочивании, должны соответствовать столбцам, для которых поддерживаются операторы сравнения.
Пример:
@Entity public class Course { ... @ManyToMany @OrderBy("lastname ASC") public List
getStudents() { ...}; ... }
Поэтому либо используйте пользовательский искатель, либо сортируйте список из Java с помощью компаратора
.