我有一些与 LoginSession 类具有一对多关系的 User 类(我的 User 类中有一个 LoginSession 集合)。
@Entity(name="T_User")
public class User()
{
....
@OneToMany(fetch=FetchType.LAZY, mappedBy="user", cascade=CascadeType.ALL)
@Fetch(FetchMode.SELECT)
@JsonIgnore
private Set<LoginSession> userLoginSession;
....
}
这是 LoginSession 类:
@Entity(name="T_LoginSession")
public class LoginSession extends BasicDTO
{
@ManyToOne
@JoinColumn(name="userId")
protected User user;
...
我有这个标准:
Criteria crit = session.createCriteria(User.class);
crit.setFetchMode("loginSession", FetchMode.JOIN);
crit.createAlias("userLoginSession", "session");
crit.add(Restrictions.eq("session.token", sessionToken));
crit.setMaxResults(1);
crit.setFirstResult(0);
crit.setFetchSize(1);
问题是获取总是惰性的。我怎样才能使它成为Eager(通过标准而不是通过属性注释)?
Note:
如果我添加@Fetch
上面的注释private Set<LoginSession> userLoginSession
注释中设置的响应获取(我不会按标准自定义它setFetchMode
).
是字段的名称(第一个参数setFetchMode
方法)正确吗?
问题:
这个错误与我的问题有关吗? https://hibernate.atlassian.net/browse/HHH-6405