Предположим, у меня есть две сущности морфия: Person
и Team
, которые выглядят так
@Entity
public class Person {
private String name;
private String login;
private String mail;
private List<Team> teams;
}
@Entity
public class Team {
private String name;
private String description;
private List<Person> members;
//some more fields
}
Я хочу отобразить эту модель в базу данных Mongodb следующим образом
Коллекция пользователей
{
name:"someName",
login:"somelogin",
mail:"some@mail.com",
teams: [
{id:"teamId", name:"TeamName"} //only specific fields fron Team Entity
{id:"anotherTeamId", name:"AnotherTeamName"}
]
}
Сборник команд
{
id:"teamId",
name:"TeamName",
description:"Very strong team",
members: [id:"aaa", name: "someName"] //only specific fields fron User Entity
//some other fields
}
{
id:"anotherTeamId",
name:"AnotherTeamName",
description:"Brave new team",
members: [id:"aaa", name: "someName"] //only specific fields fron User Entity
//some other fields
}
Итак, я хочу денормолизировать только определенные поля (например, только name
) из документа Team
в поле User
teams
.
Я не понимаю Могу ли я использовать морфию (или какой-либо другой odm) для этого случая? Какие аннотации я должен использовать в своих организациях?
Кажется, что аннотация @Reference недопустима для List<>
полей.
Думаю, мне следует создать внутренний класс PersonTeam
, который будет содержать имя и идентификатор команды, и использовать его в Person
классе
@Entity
public class Person {
private String name;
private String login;
private String mail;
private List<PersonTeam> teams;
}
public class PersonTeam {
private String teamId;
private String teamName;
}
Это хороший способ решить мою проблему? спасибо!