java - 如何制定 Hibernate 标准以仅引入需要的字段

标签 java sql hibernate

我还有下一个类:

@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/

相关文章:

java - spring jpa中如何管理数据库连接池?

java - 使用 jsoup 进行网页抓取仅返回表格的一部分

java - 在 Java 中创建静态单例模式

java - 如何在JKS中管理两个 key

sql - 主键和外键问题

MYSQL - 按另一个表对一个表进行排序

java - java 与 hibernate 中的事务问题 - 未从数据库中提取最新条目

java - 在 Java (Android) 中运行 javascript 文件

SQL隐式连接到显式连接

java - Oracle 查询到 Hibernate 查询的转换