是否可以在hibernate中添加本机查询以用作实体选择?

时间:2015-11-10 06:10:39

标签: java sql hibernate hibernate-mapping

当使用@Entity annotaion hibernate注释的类使用SELECT * FROM class_name之类的查询时。但由于某种原因,需要为类运行自定义选择查询。有没有办法提供这样的查询?

3 个答案:

答案 0 :(得分:1)

是的,根据official hibernate reference,您可以这样做:

sess.createSQLQuery("SELECT * FROM CATS").addEntity(Cat.class);

或:

sess.createSQLQuery("SELECT ID, NAME, BIRTHDATE FROM CATS").addEntity(Cat.class);

答案 1 :(得分:0)

Criteria cr = getCurrentSession().createCritiera(class_name.class) 
.setProjection(Projections.projectionList()
.add(Projections.property("id"), "id")
.add(Projections.property("name"), "name"))
.setResultTransformer(Transformers.aliasToBean(class_name.class));
List<class_name> list = cr.list();

作为select id,name from class_name,这将返回Listclass_name个包含对象的idname以及class_name中的其他变量将是null(因为您只选择了idname

答案 2 :(得分:0)

我建议你从HibernateDaoSupport获取getHibernatTemplate()。之后你可以调用find(&#34;来自Class where ....&#34;),然后你就可以轻松找到一个可以强制转换为java类的对象。

即。     列表&lt;用户&gt; users =(List&lt; User&gt;)getHibernateTemplate(&#34;来自User&#34;);