【问题标题】:Is it possible to add native query in hibernate for using as entity select?是否可以在休眠中添加本机查询以用作实体选择?
【发布时间】:2016-02-10 23:24:15
【问题描述】:

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

【问题讨论】:

  • 是的,可以,写下你想运行的查询,以帮助你

标签: java sql hibernate hibernate-mapping


【解决方案1】:
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,其中包含的对象只有idnameclass_name中的其余变量将是null(因为您只选择了@987654329 @和name)

【讨论】:

    【解决方案2】:

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

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

    或:

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

    【讨论】:

      【解决方案3】:

      我会推荐你​​从 HibernateDaoSupport 获取 HibernatTemplate()。之后,您可以调用 find("from Class where....") 并返回一个可以轻松转换为 java 类的对象。

      即 列表用户=(列表)getHibernateTemplate(“来自用户”);

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-10-19
        • 1970-01-01
        • 2015-08-11
        • 1970-01-01
        • 2013-03-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多