使用@ManyToOne对关联实体进行Hibernate连接提取会抛出EntityNotFoundException

时间:2014-09-18 09:05:03

标签: java hibernate jpa-2.0

这是我的实体模型。

 @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。

我在这里遗漏了什么吗?任何建议都表示赞赏。

1 个答案:

答案 0 :(得分:2)

尝试使用

  

左外加入fetch folder.user用户