Hibernate OGM OneToMany самостоятельно

1

Я использую 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) всегда пуст. Кто-нибудь знает, почему?

Заранее благодарю за ваши ответы.

Теги:
hibernate-ogm

1 ответ

0

Использовать аннотацию @DBRef, создать ссылку на документ в другой коллекции

@OneToOne(mappedBy = "cardRef")
@DBRef
private Card cardParent;

Ещё вопросы

Сообщество Overcoder
Наверх
Меню