Java 如何在hql查询中选择对象的一部分?

Java 如何在hql查询中选择对象的一部分?,java,hibernate,join,hql,Java,Hibernate,Join,Hql,我需要优化性能查询。对象树,如: classA { classB b; classC c; .....} 我需要选择类似于SQL的: select a.field1, b.field2, c.field3, c.field4 from a left outer join b on a.id=b.fk left outer join c on b.id=c.fk 我不知道会返回什么样的结果,是arrayList吗?或查询返回 全部3个对象? 谢谢。会的 List<Object[

我需要优化性能查询。对象树,如:

classA {
 classB b;
 classC c;
.....}
我需要选择类似于SQL的:

select a.field1, b.field2, c.field3, c.field4 from a left outer join b 
  on a.id=b.fk left outer join c on b.id=c.fk
我不知道会返回什么样的结果,是arrayList吗?或查询返回 全部3个对象? 谢谢。

会的

List<Object[]> list = new ArrayList<Object[]>();
List List=new ArrayList();
它将是

List<Object[]> list = new ArrayList<Object[]>();
List List=new ArrayList();

查询将返回的结果类型为-

 List<Object[]>
列表

查询将返回的结果类型为-

 List<Object[]>
列表

如果您使用HQL,我认为您使用的是hibernate。提供与对象的关系映射(多通或单通):

class A {

    @ManyToOne
    pribvate B b;

    @OneToOne
    private C c;
}

然后使用会话方法通过hql条件查询选择对象。Hibernate自动为您执行所有连接。如果您使用HQL,它将返回一个列表。

,我认为您使用的是hibernate。提供与对象的关系映射(多通或单通):

class A {

    @ManyToOne
    pribvate B b;

    @OneToOne
    private C c;
}

然后使用会话方法通过hql条件查询选择对象。Hibernate自动为您执行所有连接。它将返回A的列表。

还有一件事,如果我得到您需要的,这个查询应该是这样的。。选择a.id=b.fk上的类a左外部联接类b上的a.field1、b.field2、c.field3、c.field4左外部联接类c上的b.id=c.fk还有一件事,如果我得到您需要的,这个查询应该是这样的。。选择a.id=b.fk上的ClassA左外部联接ClassB上的a.field1、b.field2、c.field3、c.field4左外部联接ClassC上的b.id=c.fk有时返回的数据太多,这是最初的问题。这个解决方案和manurajhada提出的一样,被称为标量选择。有时返回的数据太多,这是最初的问题。解决方案与manurajhada提出的完全一样,称为标量选择。