Amigos quero fazer uma busca em uma tabela no banco que tem apenas uma coluna com alguns caracteres
estou usando hibernate como posso fazer para ter um select como esse no hibernate select coluna from nomeTabela
segue meu metodo de exemplo
publicStringconsultarColuna()throwsException{Stringresultado;StringBufferhql=newStringBuffer();hql.append(" select nomeDaTabela ");hql.append(" from meu.pacote.aplicacao.persistencia.minhaClasse as nomeDaTabela");Queryquery=getSession().createQuery(hql.toString());resultado=(String)query.uniqueResult();returnresultado;}
esse meu metodo da java.lang.ClassCastException nessa linha aqui resultado = (String) query.uniqueResult();
o que eu devo alterar para evitar esse ClassCast ?
Query q = entityManager.createQuery("select u from User u where u.name = :name ");
q.setParameter("name", name);
User p = (Project) q.getSingleResult();
tambem da para fazer assim :
String query = "SELECT "
+ " u.nome "
+ " FROM Usuario u "
+ " where u.id= :id ";
Query q = entityManager.createNativeQuery(query);
q.setParameter("id", id);
Object[] o = (Object[]) q.getSingleResult();
String nomeUsuario = (String) o[0];
T
thiagoRibeiro
tiozao_bp como eu coloco esse seu primeiro exemplo no meu metodo que postei,
porque na busca que quero fazer não irei passar nenhuma parametro como e apenas uma coluna com o registro
não vai ficar um select pesado um select como esse select coluna from tabela
e isso aqui seria a entidade que eu mapeei no arquivo do hibernate ?
entityManager
T
tiozao_bp
Acredito que ficaria algo assim:
try{
Queryq=entityManager.createQuery(" select c from minhaClasse c ");List<minhaClasse>resposta=q.getResultList();returnresposta;
}catch(RuntimeExceptione){
throwe;
}
se vc quer uma lista de seu modelo deve ter o retorno do metodo como “List”
se vc quer uma lista de um campo especifico faz assim:
Queryq=entityManager.createNativeQuery("select c.campo from minhaClasse c ");List<Object[]>resp=q.getResultList();List<String>lista=newArrayList<String>();for(Object[]o:resp){
lista.add((String)o[0]);}
mesmo assim o retorno do metodo tem que ser um List
Leve em consideração que sua entidade representa a tabela, e os atributos da sua entidade as colunas da tabela,
se você quer pegar só uma coluna de sua entidade/tabela deve especificar isso. como esta sendo feito na linha 5
N
neno
é, isso aí que o tiozao falou.
T
thiagoRibeiro
então neno quanto a isso que vc falou blz
queria saber qual a modificação que eu devo fazer no meu metodo em cima do exemplo do tiozao
T
thiagoRibeiro
Feras eu alterei o metodo de acordo com o que o tiozao mostro no exemplo dele mais o eclipse esta reclamando disso entityManager
thiago, entity manager é uma outra forma de persistência, tiozao colocou como um exemplo, no seu caso vc esta usando hibernate, então voce troca ele pelo getSession mesmo…
vc precisa ver o que o metodo ta retornando, vc ta fazendo um cast ali para String, a excecao que foi lancada é quando vc nao pode fazer a conversao de uma coisa pra outra.
Agora o entityManager é outra historia, que nao está relacionado ao HQL.