这是我的实体模型。
@Entity
@Table(name = "Folder")
public class Folder implements Serializable{
private User user;
//unidirectional association
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "AssignedToUserID" ,nullable=true)
public User getUser() {
return user;
}
}
@Entity
@Table(name = "User")
public class User implements Serializable{
@Id
@Column(name = "UserID")
public Integer getUserId() {
return this.userId;
}
}
基本上我想要检索所有文件夹,无论文件夹是否已分配用户。
这是我的HQL查询:
*SELECT folder from Folder folder inner join fetch folder.user user*
SQL generated By hibnermate:
select
folder0_.FolderID ,
folder0_.FolderName ,
folder0_.AssignedToUserID ,
user_0.UserID ,
user_0.UserName
from
Folder folder0_
left outer join
User user_0
on folder0_.AssignedToUserID=user_0.UserID
我想热切地加载所有关联实体,我真的想避免使用其他选择语句,因为它会影响性能,我正在检索大约500k的记录。
我希望hibernate在看到AssignedToUserID为NULL时会返回null实例。但不幸的是它抛出了EntityNotFoundException。
我在这里遗漏了什么吗?任何建议都表示赞赏。
答案 0 :(得分:2)
尝试使用
左外加入fetch folder.user用户