0

我正在使用本机查询从数据库中获取数据并将它们添加到包含浮点值的对象中,例如:

select tons, delivered_tons from contract where id = 1

并使用 createSQLQuery() 执行查询

并返回一个对象数组,如:

Object[] result = (Object[])query.uniqueResult();

并将它们投射到我的对象中

A a = new A((Float)result[0],(Float)result[1]);

问题是我不知道查询的返回类型(浮点或双精度)。那么hibernate有什么方法可以控制返回类型吗?

4

1 回答 1

1

如果您使用 HQL 而不是 os SQL,Hibernate 将使用您选择的类型来映射实体中的列:

假设您有一个包含以下字段的合同实体:

@Entity
public class Contract {
    @Column(name = "tons")
    private Float tons;

    @Column(name = "delivered_tons")
    private Float deliveredTons;

    ...
}

您只需执行 HQL 查询

select c.tons, c.deliveredTons from Contract c where c.id = :id

你肯定会得到一个包含两个浮点数的数组。

也就是说,对于这样一个简单的查询,你为什么不直接使用

Contract c = (Contract) session.get(Contract.class, id);

然后从实体中获取您想要的字段?

于 2013-03-23T10:29:24.500 回答