mapping Hibernate query results to custom class?

前端 未结 8 733
时光说笑
时光说笑 2020-12-01 11:02

Following up on a question I posted yesterday: How to populate POJO class from custom Hibernate query?

Can someone show me an example of how to code the following SQ

8条回答
  •  遥遥无期
    2020-12-01 11:34

    See AliasToBeanResultTransformer:

    Result transformer that allows to transform a result to a user specified class which will be populated via setter methods or fields matching the alias names.

    List resultWithAliasedBean = s.createCriteria(Enrolment.class)
                .createAlias("student", "st")
                .createAlias("course", "co")
                .setProjection( Projections.projectionList()
                        .add( Projections.property("co.description"), "courseDescription" )
                )
                .setResultTransformer( new AliasToBeanResultTransformer(StudentDTO.class) )
                .list();
    
    StudentDTO dto = (StudentDTO)resultWithAliasedBean.get(0);
    

    Your modified code:

    List resultWithAliasedBean = s.createCriteria(Employee.class, "e")
        .setProjection(Projections.projectionList()
            .add(Projections.property("e.firstName"), "firstName")
            .add(Projections.property("e.lastName"), "lastName")
        )
        .setResultTransformer(new AliasToBeanResultTransformer(Results.class))
        .list();
    
    Results dto = (Results) resultWithAliasedBean.get(0);
    

    For native SQL queries see Hibernate documentation:

    13.1.5. Returning non-managed entities

    It is possible to apply a ResultTransformer to native SQL queries, allowing it to return non-managed entities.

    sess.createSQLQuery("SELECT NAME, BIRTHDATE FROM CATS")
        .setResultTransformer(Transformers.aliasToBean(CatDTO.class))
    

    This query specified:

    • the SQL query string
    • a result transformer The above query will return a list of CatDTO which has been instantiated and injected the values of NAME and BIRTHNAME into its corresponding properties or fields.

提交回复
热议问题