Я пытаюсь узнать, как создать приложение Java Enterprise (в настоящее время использующее EclipseLink), там у меня есть сущность User
, которая имеет отношение @ManyToMany
с сущностью Card
, однако, когда пользователи получаютпри загрузке из базы данных атрибут карт не заполняется автоматически, как я ожидал.
Вот мой объект User:
@Entity
@Table(name = "USR")
public class User extends Person implements Serializable {
private static final long serialVersionUID = 1L;
@Column(name = "CPF", unique = true, nullable = false)
private String cpf;
@Column(name = "USERNAME", length = 20, nullable = false, unique = true)
private String username;
@Column(name = "BDAY")
@Temporal(TemporalType.DATE)
private Date bDay;
@Column(name = "EMAIL", length = 100, nullable = false, unique = true)
private String email;
@ManyToMany
private List<Card> cards;
public User() {
super();
}
}
Вот мой объект Card:
@Entity
public class Card implements Serializable {
private static final long serialVersionUID = 1L;
@Id
private String number;
@Column(name = "EXP_DATE")
@Temporal(TemporalType.DATE)
private Date expDate;
@Column(name = "VALIDATOR")
private int validator;
@Transient
private String endsWith;
public Card() {
}
}
Поэтому, когда создается мой servlet
, я загружаю пользователя из базы данных, например userBean.setUser(userFactoryEJB.find(2));
, и он работает нормально, я могу получить доступ к электронной почте, bday, имени пользователя и т. Д. Однако, когда я пытаюсьполучить пользовательские карты я получаю следующее сообщение {IndirectList: not instantiated}
.Прежде чем можно было бы спросить, я попытался инициализировать список в конструкторе User, и появляется то же сообщение.
Я ожидаю, что пользователь загружается из БД со всеми его картами, уже загруженными в атрибуте card.