Я использую Hibernate OGM с MongoDB и имею Entity, как показано ниже:
@Entity
public class Card implements Serializable, Comparable<Card>
{
private static Logger logger = LoggerFactory.getLogger(Card.class);
@Id
@GeneratedValue(generator = "uuid")
@GenericGenerator(name = "uuid", strategy = "uuid2")
private String id;
...
@OneToOne(cascade = {CascadeType.PERSIST, CascadeType.MERGE})
private Card cardRef;
@OneToOne(mappedBy = "cardRef")
private Card cardParent;
// pinning : represents the owner card
@ManyToOne
private Card cardPinOrigin;
// List of the cards that have pinned the current
@OneToMany(mappedBy = "cardPinOrigin")
private List<Card> cardsPinned = new ArrayList<>();
...
}
Когда я храню карты, обновляя карту с карточкой в списке "cardsPinned", она сохраняется в базе данных:
"Родительская" карточка
{
"_id" : "39d83887-e466-45c5-a5e8-1dfd5c22ed8a",
"cardPinOrigin" : [
{
"id" : "478f6f83-161f-44dc-86c4-844f73084ffb"
}
],
....
}
и "Ребенок"
{
"_id" : "478f6f83-161f-44dc-86c4-844f73084ffb",
"cardPinOrigin_id" : "39d83887-e466-45c5-a5e8-1dfd5c22ed8a",
...
}
Моя проблема в том, что когда я получаю данные из базы данных, список закрепленных карт (cardsPinned java List) всегда пуст. Кто-нибудь знает, почему?
Заранее благодарю за ваши ответы.
Использовать аннотацию @DBRef
, создать ссылку на документ в другой коллекции
@OneToOne(mappedBy = "cardRef")
@DBRef
private Card cardParent;