有难度的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呀,怎么会报错……