在不使用GET或LOAD的情况下获取单域类对象

时间:2018-06-10 17:19:52

标签: hibernate

我对Hibernate有一点怀疑 假设我想从Domain类obj获取特定列。

SELECT i.firstProperty, i.secondProperty FROM Users i WHERE i.id=10

这必须返回单个obj 而不是列表。我可以使用 GET LOAD 来执行此操作,但现在我不想要。还有其他办法吗。
我不能使用查询,但它有返回列表的方法,我认为 QBC 还有列表返回类型。那么有什么办法吗?

我的代码它正在成功生成查询,但在调用getProperty时显示为null。

Query query= null;
    DTO dto= null;
    SessionFactory factory= ht.getSessionFactory();
    Session ses= factory.openSession();

    query= ses.createQuery(get_Some_coloumn).setResultTransformer(new AliasToBeanResultTransformer(MobileBrands.class));

    MobileBrands brands= (MobileBrands) query.uniqueResult();


    System.out.println(brands.getId()+" "+brands.getName()+" "+brands.getPrice());



控制台
---------------

Hibernate: 
    select
        mobilebran0_.BRAND_ID as col_0_0_,
        mobilebran0_.NAME as col_1_0_,
        mobilebran0_.PRICE as col_2_0_ 
    from
        MOBILE_BRANDS mobilebran0_ 
    where
        mobilebran0_.BRAND_ID=5
0 null 0

1 个答案:

答案 0 :(得分:0)

您尚未显示获取结果的完整代码,因此,我建议将其作为基本注意事项:

SQLQuery qry = session.createQuery("SELECT i.firstProperty, i.secondProperty FROM Users i WHERE i.id=10")
                      .setResultTransformer(new AliasToBeanResultTransformer(Entity.class));    
entity = qry.uniqueResult()

这会将SQL结果转换为Entity。试试吧。