强制休眠不检索完整对象

Force hibernate to NOT retrieve full object

我在工作中接到一项任务,我必须使用休眠和一些映射到视图的 classes。任务说,我应该在一个视图上创建一个 select,它不是 return class 的完整对象,而是仅具有 class 的某些属性的对象初始化。我首先考虑创建一个只获取这些字段作为参数的构造函数,但我在网上找不到任何解决方案,它可以打开两种可能性(class 的部分和完整的 class)。欢迎任何建议。如果您需要任何代码或进一步的解释,请提出要求。

您可以创建 jpql 查询或使用条件 api 到 select 您想要的属性。

JPQL 教程是http://docs.oracle.com/javaee/6/tutorial/doc/bnbtg.html

条件是 http://docs.oracle.com/javaee/6/tutorial/doc/gjivm.html

您可以使用下面的代码。

您可以在 createQuery() 中使用本机 sql 查询并获取您需要的参数,然后您才能将结果转换为适当的 class

Query query =  ((SQLQuery) getSession().createSQLQuery(
                "select First_name,Last_name,email_id,.. from view_name  where customer_id=:customer_id").
                setResultTransformer(Transformers.aliasToBean(CustomerProfile.class))).             
                setParameter("customer_id", cutsomer_id)
                ;       
        List<CustomerProfile> list = query.list();  

需要用 getter 和 setter 创建 CustomerProfile.class。