【发布时间】:2018-12-04 23:11:49
【问题描述】:
我正在尝试学习如何创建一个 Java Enterprise 应用程序(目前使用 EclipseLink),在那里我有一个 User 实体,它与 Card 实体有 @ManyToMany 关系,但是当用户得到从数据库加载,卡片属性不会像我期望的那样自动填充。
这是我的用户实体:
@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();
}
}
这是我的卡片实体:
@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)); 这样从数据库中加载一个用户并且它工作正常,我能够访问用户的电子邮件、生日、用户名等。但是当我尝试获取用户卡我收到以下消息{IndirectList: not instantiated}。在有人可能会问之前,我确实尝试在 User 构造函数上初始化列表并出现相同的消息。
我所期望的是,用户从数据库中加载,他们的所有卡片都已加载到卡片属性中。
【问题讨论】:
-
尝试访问它是什么意思?您发布的消息不是错误。您是在调用 getCards 并遍历列表吗?
标签: java jpa jakarta-ee eclipselink