首页 > 解决方案 > 不使用 GET 或 LOAD 获取单个域类对象

问题描述

嗨,我对 Hibernate 有一点疑问。
假设我想从域类 obj 中获取特定的列。
喜欢

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

这必须返回一个 obj而不是 list。我可以使用GETLOAD来执行此操作,但现在我不想要了。那么有没有其他的办法呢。
我不能使用查询,虽然它有返回列表的方法,我认为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

标签: hibernate

解决方案


您还没有显示完整的代码来获取结果,因此,出于一些基本考虑,我建议如下:

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. 试一试。


推荐阅读