Spring Hibernate获取选定的列 [英] Spring Hibernate get selected columns

查看:71
本文介绍了Spring Hibernate获取选定的列的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

  @Override 
我试图使用hibernate获得一些特定的列,但是这个查询总是失败。 public用户findByEmail(String emailID){
// TODO自动生成的方法存根
尝试{

List< Users> users = new ArrayList< Users>();
$ b $ users = this.sessionFactory.getCurrentSession()。createQuery(SELECT userID,firstName,lastName,imageURL,password,emailID,enabled FROM Users WHERE emailID =:email_ID)
.setParameter (email_ID,emailID).list();

if(users.size()> 0)
return(Users)users.get(0);
else
返回null;

catch(Exception exc)
{
log.error(exc.getMessage());
返回null;






这个查询总是失败,所以我使用下面的查询

  @Override 
public用户findByEmail(String emailID){
// TODO自动生成的方法存根
尝试{

列表<用户> users = new ArrayList< Users>();
$ b users = this.sessionFactory.getCurrentSession()。createQuery(FROM Users WHERE emailID =:email_ID)
.setParameter(email_ID,emailID).list();

if(users.size()> 0)
return(Users)users.get(0);
else
返回null;

catch(Exception exc)
{
log.error(exc.getMessage());
返回null;






$ b

如何仅使用hibernate获取特定列而不是你可以尝试使用一个结果转换器



获得20个列?

解决方案

 列表<使用者> users = session 
.createQuery(
SELECT userID as userID,firstName as firstName FROM Users WHERE emailID =:email_ID)
.setParameter(email_ID,emailID)
。 setResultTransformer(new AliasToBeanResultTransformer(User.class))。list();

您需要指定投影别名: firstName as firstName ,但你可以尝试没有它。


I am trying to get some specific columns using hibernate, but this query always fails.

@Override
public Users findByEmail(String emailID) {
    // TODO Auto-generated method stub
    try{

        List<Users> users = new ArrayList<Users>();

        users = this.sessionFactory.getCurrentSession().createQuery("SELECT userID, firstName, lastName, imageURL, password, emailID, enabled FROM Users WHERE emailID = :email_ID")
                .setParameter("email_ID", emailID).list();

        if(users.size() > 0)
            return (Users)users.get(0);
        else
            return null;
    }
    catch(Exception exc)
    {
        log.error(exc.getMessage());
        return null;
    }
}

This query always fails, so I use the below query

    @Override
public Users findByEmail(String emailID) {
    // TODO Auto-generated method stub
    try{

        List<Users> users = new ArrayList<Users>();

        users = this.sessionFactory.getCurrentSession().createQuery("FROM Users WHERE emailID = :email_ID")
                .setParameter("email_ID", emailID).list();

        if(users.size() > 0)
            return (Users)users.get(0);
        else
            return null;
    }
    catch(Exception exc)
    {
        log.error(exc.getMessage());
        return null;
    }
}

How can I get only specific columns using hibernate rather than getting 20s of columns?

解决方案

You can try to use a result transformer

List<User> users = session
.createQuery(
"SELECT userID as userID, firstName as firstName FROM Users WHERE emailID = :email_ID")
.setParameter("email_ID", emailID)
.setResultTransformer(new AliasToBeanResultTransformer(User.class)).list();

You need to specify projection aliases: firstName as firstName, but you can try without it.

这篇关于Spring Hibernate获取选定的列的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆