我仅从数据库中的表中返回几列:

List<MyClass> l = (List<MyClass>) session.createQuery("Select p.one, p.two FROM MyClass p WHERE p.id IN :id")
                    .setParameter("userId", id)
                    .list();


但是,查询返回数组列表,例如

l.get(0) // [0] is object representing p.one in query, [1] p.two


有一种休眠的有效方式如何将其映射到MyClass对象?因此,查询实际上将返回MyClass对象的列表,其中所选属性将具有值,其他属性将被设置为null?

我已经在construtor的查询中阅读了关于new MyClass(arg1,arg2)的方式,但是我也阅读了它无效的方法。

感谢帮助!

最佳答案

您可以使用try catch块并使用query.getSingleResult()返回Object。

Query query = em.createNativeQuery("FROM TipoUsuario WHERE NAME = :name;", TipoUsuario.class)
        .setParameter("name", name);

TipoUsuario tipoUsuario = null;

try
{
    tipoUsuario = (TipoUsuario) query.getSingleResult();
}
catch ( Exception e )
{
    return null;
}


createNativeQuery只是一个示例。您可以改用createNamedQuery并将HQL放在带有注释@NamedQueries的Entity中。

07-26 02:57