【发布时间】:2014-11-08 13:56:37
【问题描述】:
我有一些类 User 与 LoginSession 类有一对多的关系(我的 User 类中有一组 LoginSessions)。
@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(通过标准而不是通过属性注释)?
注意:
如果我在private Set<LoginSession> userLoginSession 上方添加@Fetch 注释,则在注释中设置的响应获取(我不会按照标准setFetchMode 对其进行自定义)。
字段名称(setFetchMode 方法的第一个参数)是否正确?
【问题讨论】:
-
@Killer,我看不出它对我有什么帮助
标签: java hibernate fetching-strategy