我有两个实体:牌组和卡牌
@Entity
class Deck {
private String name;
@ManyToMany
private List<Card> cards;
}
@Entity
class Card {
private String name;
@ManyToMany
private List<Deck> decks;
}
每个实体都有一个模型
class DeckModel {
private String name;
private List<CardModel> cards;
}
class CardModel {
private String name;
private List<DeckModel> decks;
}
现在我想转换 Deck
在 DeckModel
所以我创建了这两个函数:
DeckModel convert(Deck deck) {
DeckModel model = new DeckModel();
model.setName(deck.getName());
model.setCards(deck.getCards().stream()
.map(card -> convert(card))
.collect(Collectors.toList()));
return model;
}
CardModel convert(Card card) {
CardModel model = new CardModel();
model.setName(card.getName());
model.setDecks(deck.getDecks().stream()
.map(deck -> convert(deck))
.collect(Collectors.toList()));
return model;
}
这段代码的问题是当我转换Card(s)
时在CardModel(s)
我触发了与我正在转换的牌组相关的所有卡片的延迟加载,但我想要的是稍后在我的应用程序中决定是否要获取所有 Card(s)
与 Deck
相关.
有没有一种简单/标准的方法可以做到这一点?
最佳答案
由于列表中的模型不同,您需要迭代 for 循环并手动设置它。 您不能使用反射,因为模型字段不同。 否则你可以使用 BeanUtils.copyProperties() 将 DeckEntity 的字段映射到 Deck 并在列表中设置该 Deck 对象。
关于java - 转换 Hibernate 列表而不初始化它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52329856/