У меня есть объект со следующим полем:JPA SortedSet это не прибегли после того, как сохраняются
@ManyToMany(cascade = { CascadeType.ALL }, targetEntity = Comment.class)
@JoinTable(name = "program_to_comment")
@OrderBy("position")
private Set<Comment> comments = new HashSet<Comment>();
, но у меня есть проблема, что всякий раз, когда я упорно его с помощью:
Program p = entityManager.persist(entity);
поле поставляется с объекты отсортированы, поскольку они были отсортированы в объекте entity
.
Предположим, что объект entity
настроен следующим образом: Program(comments:[Comment(position:15), Comment(position:10)], ...)
, сохраняя объект (entityManager.persist
), он будет хранить как комментарии, так и сам объект программы в базе данных. Но полученный объект из вызова метода persist является объектом следующим образом: Program(comments:[Comment(position:15), Comment(position:10)], ...)
, в том же порядке, что и метод persist.
С моей точки зрения, приведенный объект должен представить значения, следующие за указанным правилом @OrderBy, или я что-то пропустил?
Дополнительная информация:
- JPA2
- Hibernate 4.2.0.Final
Если вы попытаетесь использовать аннотацию ['@ OrderColumn'] (http://docs.oracle.com/javaee/6/api/javax/persistence/OrderColumn.html), и поэтому не ставьте позиции в объекте «Комментарий», то вы можете контролировать порядок комментариев, контролируя их позицию в списке. Это должно оставаться согласованным между приложением и базой данных. Я не уверен, действительно ли это помогает. –