【发布时间】:2016-02-10 23:24:15
【问题描述】:
当使用@Entity 注释的类时,hibernate 使用SELECT * FROM class_name 之类的查询。但由于某种原因,需要为类运行自定义选择查询。有没有办法提供这样的查询?
【问题讨论】:
-
是的,可以,写下你想运行的查询,以帮助你
标签: java sql hibernate hibernate-mapping
当使用@Entity 注释的类时,hibernate 使用SELECT * FROM class_name 之类的查询。但由于某种原因,需要为类运行自定义选择查询。有没有办法提供这样的查询?
【问题讨论】:
标签: java sql hibernate hibernate-mapping
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,这将返回class_name中的List,其中包含的对象只有id和name,class_name中的其余变量将是null(因为您只选择了@987654329 @和name)
【讨论】:
是的,根据official hibernate reference,你可以这样做:
sess.createSQLQuery("SELECT * FROM CATS").addEntity(Cat.class);
或:
sess.createSQLQuery("SELECT ID, NAME, BIRTHDATE FROM CATS").addEntity(Cat.class);
【讨论】:
我会推荐你从 HibernateDaoSupport 获取 HibernatTemplate()。之后,您可以调用 find("from Class where....") 并返回一个可以轻松转换为 java 类的对象。
即 列表用户=(列表)getHibernateTemplate(“来自用户”);
【讨论】: