我仅从数据库中的表中返回几列:
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中。