-1
我所有的Hibernate类有一个类似的方法:获取项目作为一个Hibernate查询结果列表
@Transactional
public DadosUsuario findById(int id) {
log.debug("getting DadosUsuario instance with id: " + id);
try {
DadosUsuario instance = (DadosUsuario) sessionFactory.getCurrentSession().get(DadosUsuario.class, id);
log.debug("get successful");
return instance;
} catch (RuntimeException re) {
log.error("get failed", re);
throw re;
}
}
其结果为从表DadosUsuario一行与中的指定ID。我想从这个例子中得到一个变化,我可以从这个表中搜索其他字段(这是fk_usuario,fk_dados和conteudo)。
我尝试类似的东西:
@Transactional
public DadosUsuario findByUsuario(Usuario user) {
log.debug("getting DadosUsuario instance with id: " + user.getLogin());
try {
DadosUsuario instance = (DadosUsuario) sessionFactory.getCurrentSession().get(DadosUsuario.class, user);
log.debug("get successful");
return instance;
} catch (RuntimeException re) {
log.error("get failed", re);
throw re;
}
}
但不工作(在methog获得不接受类型Usuario作为第二个参数)。我也尝试使用SQL查询,下面从本文的例子:
http://www.mkyong.com/hibernate/hibernate-native-sql-queries-examples/
而且也没有得到一个实用的方法。有人知道我怎么能做到这样的methos的实现:
public List<DadosUsuario> findByUsuario(Usuario user) {
其中回报率将用户的数据(DadosUsuario)的列表?
UPDATE
最终代码:
@SuppressWarnings("unchecked")
@Transactional
public List<DadosUsuario> findByUsuario(Usuario user) {
Query query = sessionFactory.getCurrentSession().createSQLQuery(
"select * from dados_usuario where fk_usuario = :id_usuario")
.addEntity(DadosUsuario.class)
.setParameter("id_usuario", user.getId());
List<DadosUsuario> allUsers = query.list();
return allUsers;
}
谢谢你的回答。我将你的解释与我在文章中引用的代码混合在一起,并得到我添加的问题。 –
这就是学习如何:) –