为什么hibernate查询与关系触发父选择?

为什么hibernate查询与关系触发父选择?,hibernate,hql,many-to-one,Hibernate,Hql,Many To One,我有一个班主任,他的亲戚是一个朋友: @实体 @Tablename=父亲 公课父亲 { 私有字符串id; 私人长a; 私人长b; @OneToManyfetch=FetchType.Lazy, mappedBy=‘父亲’, cascade=CascadeType.ALL 私人名单; } 与多通相关的子类: @实体 @Tablename=son 公子 { 私有字符串id; 私人父亲; @ManyToOnecascade=CascadeType.ALL @JoinColumnname=id,refe

我有一个班主任,他的亲戚是一个朋友:

@实体 @Tablename=父亲 公课父亲 { 私有字符串id; 私人长a; 私人长b; @OneToManyfetch=FetchType.Lazy, mappedBy=‘父亲’, cascade=CascadeType.ALL 私人名单; } 与多通相关的子类:

@实体 @Tablename=son 公子 { 私有字符串id; 私人父亲; @ManyToOnecascade=CascadeType.ALL @JoinColumnname=id,referencedColumnName=id,nullable=false,insertable=false,Updateable=false 公公父亲{ 回归父亲; } } 在我的测试中,我想选择父亲,然后选择儿子

要选择父亲,我需要从几个表中使用join,然后执行hql查询

字符串sql=选择父id、a.a、b.b+ 从父亲加入父亲的a.id=a.id+ 加入b onb.id=a.id+ 其中a.id=123; SQLQuery SQLQuery=session.createSQLQuerysql.addScalar。。。; query.setParameterid,123; 查询列表; hql=来自子,其中ID=:ID; Query Query=session.createQueryhql; query.setParameterid,123; query.list;\ \实际上休眠运行从子选择,然后从父选择 hibernate确实选择了儿子,然后又选择了父亲


我怎么能告诉hibernate我已经有了父亲,所以他不选择父亲本身

@manytone默认情况下会被急切地获取。您应该添加FetchType.Lazy以避免选择

@ManyToOne(cascade = CascadeType.ALL, fetch=FetchType.Lazy)

完整显示查询。。或者你需要用到的所有东西