I have next classes:
@Entity
@Table(name="A")
public class A implements Serializable{
@Id
@Column(name="a_id")
private long aId;
@ManyToOne
@JoinColumn(name="b_id")
private B b;
}
@Entity
@Table(name="b")
public class B implements Serializable{
@Id
@Column(name="b_id")
private long bId;
@Column(name="b_name")
private String name;
@Column(name="b_age")
private String age;
@OneToMany(mappedBy="b")
private Set<A> a;
}
I have getters and setters for this classes.
when I try execute next Criteria
session.createCriteria(A.class, "a_table")
.createAlias("a_table.b", "b_table")
.add(Restrictions.eq("b_table.age", "11"))
.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY)
.list();
In SQL generated by hibernate I have all fields from B (I mean field "name" too). How I can make to Hibernate bring only needed fields.
In case that in criteria exists many aliases to many tables, it can increase execution time. Thank you.