Java 使用spring和hibernate处理对象

Java 使用spring和hibernate处理对象,java,hibernate,spring,jakarta-ee,Java,Hibernate,Spring,Jakarta Ee,希望大家都很酷。我一直在尝试用spring hibernate做一些事情,但还是失败了。我对它很陌生。我需要一些帮助。假设是一个POJO类用户。我想通过用户名返回一个用户对象。而通过这样做,我可以通过id返回用户对象 return (Users) getHibernateTemplate().get(Users.class, id); 对于我来说,通过用户名获取用户对象似乎是一个挑战。我试过这个 List<Users> users = getHibernateTemplate

希望大家都很酷。我一直在尝试用spring hibernate做一些事情,但还是失败了。我对它很陌生。我需要一些帮助。假设是一个POJO类用户。我想通过用户名返回一个用户对象。而通过这样做,我可以通过id返回用户对象

   return (Users) getHibernateTemplate().get(Users.class, id);
对于我来说,通过用户名获取用户对象似乎是一个挑战。我试过这个

List<Users> users = getHibernateTemplate().find("from Users u where u.username=?",username);
return  users.get(0);

我应该怎么做。返回用户对象数组和/或列表的正确方法是什么。感谢阅读此文章。

也许您可以试试这个

List l =getHibernateTemplate().find("from Users u where u.username=?",new Object[]{username});
if (l.size() > 0)
 return (User)l.get(0);
else
return null;

也许你可以试试这个

List l =getHibernateTemplate().find("from Users u where u.username=?",new Object[]{username});
if (l.size() > 0)
 return (User)l.get(0);
else
return null;
试试这个

Query q = session.createQuery("select * from Users u where u.username=:username");
q.setString("username", username);
试试这个

Query q = session.createQuery("select * from Users u where u.username=:username");
q.setString("username", username);

另一个更好的方法是使用标准。请参见下面的示例

    DetachedCriteria deCriteria = DetachedCriteria.forClass(User.class, "u");
    Criteria criteria = deCriteria.getExecutableCriteria(session);

    criteria.add(Restrictions.eq("u.username", username));
    List<User> userList = criteria.list();
DetachedCriteria=DetachedCriteria.forClass(User.class,“u”);
Criteria=deCriteria.getExecutableCriteria(会话);
添加(Restrictions.eq(“u.username”,username));
List userList=criteria.List();

另一个更好的方法是使用标准。请参见下面的示例

    DetachedCriteria deCriteria = DetachedCriteria.forClass(User.class, "u");
    Criteria criteria = deCriteria.getExecutableCriteria(session);

    criteria.add(Restrictions.eq("u.username", username));
    List<User> userList = criteria.list();
DetachedCriteria=DetachedCriteria.forClass(User.class,“u”);
Criteria=deCriteria.getExecutableCriteria(会话);
添加(Restrictions.eq(“u.username”,username));
List userList=criteria.List();

请不要使用可怕的“return null”(返回null)——在调用包含上述代码的方法后不久,它会在某处请求NullPointerException。我更喜欢的处理这种情况的方法是抛出一个UserNotFoundException。我认为在不了解操作上下文的情况下,您不可能这样概括。据我们所知,返回null可能是由接口契约定义的。我返回了一个新的users对象。谢谢各位。用户数组呢?假设我想返回名称为francis的所有用户,那么所有用户名称“james”如何:)。当然,返回列表,而不是第一项。问题在哪里?顺便说一句,我不赞成在使用Hibernate之类的强大API时为琐碎的情况编写SQL。啊,如果找不到用户,请返回空列表:),而不是抛出异常或返回null。不过,一个好主意确实取决于接口契约。干杯。请不要使用可怕的“returnnull”-这是在调用包含上述代码的方法后不久在某处请求NullPointerException。我更喜欢的处理这种情况的方法是抛出一个UserNotFoundException。我认为在不了解操作上下文的情况下,您不可能这样概括。据我们所知,返回null可能是由接口契约定义的。我返回了一个新的users对象。谢谢各位。用户数组呢?假设我想返回名称为francis的所有用户,那么所有用户名称“james”如何:)。当然,返回列表,而不是第一项。问题在哪里?顺便说一句,我不赞成在使用Hibernate之类的强大API时为琐碎的情况编写SQL。啊,如果找不到用户,请返回空列表:),而不是抛出异常或返回null。不过,一个好主意确实取决于接口契约。干杯。我会试试这个,但我想我会用spring函数findbycriteria试试,看看会怎么样。谢谢你必须,在使用Hibernate/Spring这类强大的API时,不鼓励为琐碎的情况编写SQL。我将尝试这一点,但我认为我将使用Spring函数findbycriteria来尝试,看看会如何进行。谢谢你必须,在使用Hibernate/Spring之类的强大API时,不鼓励为琐碎的情况编写SQL。这也是我处理此问题的首选方法。我发现命名参数可以更容易地理解代码在做什么。这也是我处理这个问题的首选方法。我发现命名我的参数可以更容易地理解代码在做什么。