我还有下一个类:
@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;
}
我有这个类的 getter 和 setter。
当我尝试执行下一个条件时
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();
在 hibernate 生成的 SQL 中,我拥有 B 中的所有字段(我的意思是字段“name”)。 我如何才能使 Hibernate 仅带来需要的字段。
如果条件中存在许多表的许多别名,则可能会增加执行时间。 谢谢。
最佳答案
尝试使用投影。也许是这样的:
Criteria cr = session.createCriteria(User.class)
.setProjection(Projections.projectionList()
.add(Projections.property("id"), "id")
.add(Projections.property("Name"), "Name"))
.setResultTransformer(Transformers.aliasToBean(User.class));
列表列表 = cr.list();
关于java - 如何制定 Hibernate 标准以仅引入需要的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22168486/