2012-06-25 33 views
1

我有一个简单的pojo,由于休眠状态而被填充。我希望看到这个POJO的变量被映射到一个非常特定的SQL查询,我想知道是否有可能在hibernate.xml文件中创建这样的映射?ORM将变量映射到休眠状态下的SQL查询

非常感谢

回答

1

纯JPA没有简单的方法来做到这一点。最好的方法是使用Hibernate's @Formula注释,您可以在其中指定应该用于获取字段数据的“SQL片段”。

+0

这似乎很好,是否有可能在xml映射文件中做到这一点,而不是作为注释? – Farid

+0

是的,请参阅文档中的5.1.4.2:http://docs.jboss.org/hibernate/core/4.0/manual/en-US/html_single/#mapping-declaration-property – jpkrohling

0

您是否在寻找一些这样的事

String sql = "SELECT a.id As id, CONCAT(a.firstName,' ',a.lastName) AS advisorName from tableAdvis"; 

List<CollectionReport> collectionList = (List<CollectionReport>) getSession().createSQLQuery(sql).setResultTransformer(Transformers.aliasToBean(CollectionReport.class)).list(); 

这里是我的CollectionReport POJO看起来像

public class CollectionReport { 

    private BigInteger id; 
    private String advisorCode; 
    private String advisorName;  
    //Getter & Setter 

} 

使用ResultTransformer会得到查询结果,并根据属性名在POJO中,它为它赋值。