Исходя из моего слишком популярного вопроса вчерашнего дня:
Hibernate (JPA) отображает HashMap
Я пытаюсь отобразить структуру, котораяпо существу, следующее:
Map<User, List< POJOWithComposite >>
Где User
- базовая модель, подобная следующей:
@Entity
public class User extends Model {
public String username;
public String password;
...
}
и POJOWithComposite
- другая сущность, которая имеет некоторые сопоставленные сущности инекоторые примитивы, похожие на:
@Entity
public class POJOWithComposite extends Model {
public int someIntField;
public OtherModel compositeEntity;
...
}
Структура может быть аналогична корзине для покупок.Таким образом, User
содержит информацию об учетной записи, OtherModel
может быть покупным товаром, а POJOWithComposite
- корзиной покупок, которая, например, содержит товары и количество.Моя аналогия немного нарушается, когда речь идет о главном объекте, но утешите меня, и скажем, для каждой сессии мы добавляем корзину покупок, за которую заплатил пользователь, в список, который затем архивируется, скажем.
* 1022Во-первых, если список принадлежит каждому пользователю, я мог бы просто добавить его в модель
User
, хотя я чувствую, что он не очень модульный (т. Е. Информация на самом деле не является информацией учетной записи пользователя).Банкомат, эта карта находится в классе покупок, похожем на утилиту, который заботится о том, чтобы сопоставить покупательские тележки с покупателями, чтобы избавить меня от того, чтобы сделать модель
User
слишком большой.(Есть ли лучший образец для использования здесь, возможно?)
Предполагая, что я продолжу этот путь, давайте попробуем отобразить это Map
.В идеале я хотел бы иметь возможность отобразить это как есть.Хотя мне очень не повезло с этим.
Я немного поговорил о том, чтобы легко отобразить ArrayList
, потому что это Serializable
, хотя здесь это не удалось реализовать.
ТакЯ сделал обертку сущности:
@Entity
public class POJOWithCompositeList extends Model {
@OneToMany
List<POJOWithComposite> list = new ArrayList<POJOWithComposite>();
}
Это работает.Когда я использую эту сущность таким образом, я могу отобразить свою новую:
@ManyToMany
Map<User, POJOWithCompositeList>
Хотя мне не очень нравится это решение, потому что я добавляю другую сопоставленную сущность, то есть сущность обертки означает другую таблицу в базе данных,что означает другое присоединение к каждому запросу и т. д. *
Итак, два моих вопроса:
- С точки зрения дизайна, допустимо ли вставлять это
Map
в класс утилит? - Если мы сопоставим модели, как это, как я могу улучшить отображение?