[RESOLVIDO]Mapeamento com Hibernate-Annotations

Bom dia galera,

estou com uma duvida aqui, sou novo em java estou estudando não faz mtu tempo, estou utilizando o hibernate-annotations para mapear as classes e funcionou blz qdo eu tentei inserir, atualizar e deletar dados…

mais ontem eu fui tentar navegar pelos registros escrevendo eles com println()

        Session session = new HibernateFactory().getSession();
        Iterator iter = session.createQuery("select iduser, login from usuarios").iterate();
        
        while ( iter.hasNext() ) {
            Usuarios qux = (Usuarios) iter.next();  

            System.out.println(qux.getLogin());
        }

e recebe esse erro

axei estranho pq eu mapiei com hibernate-annotations e ainda vou ter que criar akeles xml’s xatos ???

aqui está minha classe usuarios sem o getters e setters

@Entity
@SequenceGenerator(name = "sequencia_usuario", sequenceName = "usuarios_iduser_seq", allocationSize= 1)
public class Usuarios {
    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "sequencia_usuario")
    @Column(name = "iduser", nullable = false)
    private Integer iduser;
    @Column(name = "login", nullable = true, length = 20)
    private String login;
    @Column(name = "senha", nullable = true, length = 20)
    private String senha;
    @Column(name = "acesso", nullable = true, length = 1)
    private String acesso;

minha duvida é se mesmo eu usando hibernate-annotations eu tbm vou precisar criar os mapeamentos em xml ?

vlw galera

abraços

Seu erro não sei te dizer o que é ainda, também não tenho experiência com hibernate hehe… , parece que seu select está errado, ele deve retornar um list. Mas se vc usa anotações, não precisa mapear com xml. No site do Hibernate tem um pdf “hibernate_reference” que tem um monte de HQL la.

Abraços

Duas coisas.
1 - Ao dar select em duas colunas, ele não vai trazer para você um objeto Usuarios (nome da sua classe). Vai trazer um Object[]. Você em hql pode omitir o select e fazer from alguma coisa: from ClasseX.
2 - Acho que você tem que usar o nome da classe: Usuarios. E não usuarios. Assim ele não entende.

sidneycarlos65: antes eu havia tentado com list tbm, mais acontecia o mesmo erro…

fiaux: é isso mesmo cara, coloquei Usuarios e deu certo, não sabia que esse SQL ou HQL era case sensitive.

com list funcionou normal, mais com iterator está dando erro

Hibernate: select usuarios0_.login as col_0_0_ from usuarios usuarios0_ Exception in thread "main" java.lang.ClassCastException: java.lang.String cannot be cast to testehibernate.Usuarios at testehibernate.Main.main(Main.java:55) Java Result: 1 CONSTRUÍDO COM SUCESSO (tempo total: 1 segundo)

sabe oq pode ser ?

eu estou pegando exemplos do site www.java2s.com, axei mtu bom, mais alguem conhece algum outro site que tenha mais exemplos de hibernate ?

Seu erro parece serr algo do tipo

Usuario = “valor String”

atribui esse “valor String” a Usuario.setlogin(“valor String”), por exemplo, que deve funcionar.

Como está fazendo? Mostra o código. É a mesma query?
Na verdade o problema não é ser case sensitive, mas é que você disse ao hibernate que Usuarios, sua classe, é uma @Entity, então ele sabe que o nome dele é o nome da classe.

sim estou usando o mesmo código…

acho que estou entendendo melhor então, qdo usei “select iduser, login from usuarios” eu pensava estar fazendo um select na tabela, mais pelo o que eu entendi é na classe ? e a classe se encarrega do resto ?

Creio que o problema seja o que o fiaux disse anteriormente.

já que Usuarios tem os atributos iduser, login, senha e acesso, quando vc faz o HQL buscando apenas alguns desses campos ele vai retornar um vetor de Objetos e não um vetor de Usuarios

sendo assim, vai dar ClassCastException mesmo
vc precisa tratar o retorno (quando busca apenas alguns campos) como um Object[]

É um select na tabela mapeada para sua classe, o hibernate se encarrega do resto, é como diz o tutorial aqui do GUJ, você de livra do SQL no código. Ele fica responsável por isso. Você quer trazer todos os Usuarios? Porque não fazer o hql como “from Usuarios”, deixar ele montar a List de objetos Usuarios, com todos os atributos, de maneira completa, e retornar?

blz, deu certo !!!

tava tentando “select * from Usuarios” mais não deu… preciso aprende esse HQL agora pq deve ser um pouco diferente

funcionou com “from Usuarios”

o iterator funcionou sem erro

tenho muito o que estudar de hibernate ainda, é bem completo… e um pouco complicado tbm =p

vlw mesmo agora ajudaram muito