The problem relies in the fact that you have used ID of the card as index.
In the essence index is the column that user code does not change or access directly, Hibernate takes care of the data in the column.
http://www.hibernate.org/hib_docs/v3/re ... ns-indexed
I would suggest creating and using a different column to be index of the card in your collection id you need to manipulate and preserve the order of cards in the collection, or simple map the list as set and specify sort column, which very well could be the card ID.
http://www.hibernate.org/hib_docs/v3/re ... ons-sorted
The second scenario will simply guarantee that cards are always in the same order.