Я думаю, что нет возможности добиться этого напрямую с помощью списков. Мы на работе используем следующее:
Если вы хотите предоставить своему пользователю полный контроль над порядком сущностей, вам следует добавить новое поле, например:
@Entity
public class Todo {
@Id private Long id;
private int position;
// + public setter/getter
}
@Entity
public class Todos {
@Id private id;
@OneToMany
private List<Todo> todos = new LinkedList<Todo>();
// + public setter/getter
}
, а затем разместите порядок по позициям во всех запросах или реализуйте Comparator для Todos и используйте Collections.sort (List lst, Comparator cmp) для сортировки списка в памяти.
public class TodoComparator implements Comparator {
public int compare(Object o1, Object o2) {
Todo t1 = (Todo)o1;
Todo t2 = (Todo)o2;
return t2.getPosition() - t1.getPosition();
}
}
Collection.sort (задачи, новый TodosComparator ());
после того, как ваш пользователь завершит переупорядочение списка, (перед сохранением) перенумеруйте список:
for(int pos=0; pos < todos.size(); pos++ )
todos.get(pos).setPosition(pos);
и сохранение задач. И наслаждайтесь полным контролем.