管理返回类型hibernate

时间:2013-03-23 10:12:22

标签: java mysql hibernate

我正在使用本机查询从数据库中获取数据并将它们添加到内容浮点值为的对象中:

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]);

问题是我无法知道查询的返回类型(float或double)。那么hibernate有没有任何方法来控制返回类型?

1 个答案:

答案 0 :(得分:0)

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

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

@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

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

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

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

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