有难度的HQL关联查询问题,高手请进……(分值不够一定再加)

yeno 2006-06-28 06:19:11
现在有三个表,二个类,其部分描述如下:
表一:Company
companyId(Integer), contactId(ContactInfo), propsId(CompanyProps) ...
表二:ContactInfo
contactId(Integer) ...
表三:CompanyProps
propsId(Integer) ...

括号中为表字段在Hibernate映射成类后的数据类型,因为Id为主键,所以Company表中的contactId数据类型为ContactInfo对象(表二映射后的实体类)……

类一:ClientEntry
private CompanyEntry com;
……
类二:CompanyEntry
private Company company;
private CompanyProps props;
private ContactInfo contact;
……
查询语句:
String hsql = "select new CompanyEntry(c,p,ct) from Company as c left join c.companyProps as p left join c.contactInfo as ct where c.companyId=10000006";
然后我用com接收到查询结果:CompanyEntry com = (CompanyEntry)查询结果;
打印输出……
System.out.println("CompanyEntry: "+com);
System.out.println("CompanyEntry.Company: "+com.getCompany());
System.out.println("CompanyEntry.ContactInfo: "+com.getContact());
System.out.println("CompanyEntry.CompanyProps: "+com.getProps());

出现的奇怪问题是:com和com.getCompany()都存在,但com.getContact()和com.getProps()一输出就报错,如果屏蔽就没问题,郁闷了一天半了……

我想,既然CompanyEntry已经由构造函数
public CompanyEntry(Company company, CompanyProps props, ContactInfo contact)
给实例化了,而且com.getCompany()也有值,就算它的其它两个属性没值,也顶多是个null呀,怎么会报错……
...全文
173 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
yeno 2006-06-29
  • 打赏
  • 举报
回复
Yes, 阁下很英明,结账!
Saro 2006-06-28
  • 打赏
  • 举报
回复
延迟加载的问题
left join fetch

Company as c left join c.companyProps
->
Company as c left join fetch c.companyProps

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧