o printStackTrace
Bom dia!
NoSuchMethodError quer dizer que um método esperado não foi encontrado na classe ClassWrite do jar da asm.
Troca a versão deste jar pra ver qual é.
Eu uso
Hibernate 3.2.1
cglib-2.1_3
asm-1.5.3
e asm-attrs-2.2
Good luck!
Bruno Lacerda teria como você me mandar estes jar para que não tenha problema?
abraço
Já foi!
valeu bruno…
agora deu quase certo
public UsuarioBean read(String login) {
entity.getTransaction().begin();
UsuarioBean usuario = entity.find(UsuarioBean.class, login);
entity.close();
return usuario;
}
se eu faço desse jeito acima, dá esse erro aqui
ai se eu coloco assim
[code]
public UsuarioBean read(String login) {
entity.getTransaction().begin();
UsuarioBean usuario = entity.find(UsuarioBean.class, 1);
entity.close();
return usuario;
}
dá esse erro aqui
esse erro aqui é mais aceitavel pois a coluna que representa a equipe é null, que eu já resolvi
o problema agora é como fazer para buscar pelo campo login?
Tem que montar uma query.
no método que eu havia te passado faz o seguinte:
public UsuarioBean read(String login) {
Query query = entity.createQuery("from usuarioBean ub where ub.login = ?");
query.setParameter(1, login);
return (UsuarioBean) query.getResultList().get(0);
}
Não testei aqui, mas vou ver se consigo tb.
Testa aí…
Bruno, deu quase certo, tive que apenas colocar o nome da classe me maiusculo
public UsuarioBean read(String login) {
Query query = entity.createQuery("from UsuarioBean ub where ub.login = ?");
query.setParameter(1, login);
return (UsuarioBean) query.getResultList().get(0);
}
aproveitando o tópico, como posso fazer para selecionar um determinado campo da tabela???
Funcionou?
Retornou um usuário pelo Login?
Bom, os campos das tabelas são as variáveis de instância dos seus beans (objetos do modelo).
Se você quiser selecionar um campo da tabela é a mesma coisa que fez antes. No caso você selecionou um UsuarioBean pelo campo Login da tabela.
Com o objeto retornado você agora tem acesso a todos os campos daquele registro (UsuarioBean) que o hibernate retornou para você.
funcionou, deu certinho…
mas o que perguntei é o seguinte…
vamos supor que eu queira selecionar o nome da equipe que o usuario faz parta, você concorda que não precisarei do objeto usuario completo…
teria como retornar só o nome da equipe?
Somente a String?
Não tem como, além do usuário, você vai ter que navegar até o objeto equipe e pegar este nome, ou seja, o nome da equipe ao qual o usuário encontrado pelo login faz parte.
Ex:
usuarioBean.getEquipe().getNome();
[]
ah então beleza…
pensei que desse para fazer
select nome_equipe from usuario login = ?
mas beleza…
vou fazer mais alguns pontos do sistema
abraço e obrigado pelas dicas
agora veio outra dúvida!
como o Hibernate sabe a sequencia que ele tem que pegar…
@Entity
@Table(name="equipe", schema="public")
public class EquipeBean implements Serializable {
private static final long serialVersionUID = 4157547012821652450L;
@Id
@GeneratedValue(strategy=GenerationType.SEQUENCE)
@Column(name="cod_equipe")
private Integer codEquipe;
@Column(name="nome_equipe")
private String nomeEquipe;
@OneToMany(mappedBy="equipe", fetch=FetchType.LAZY, cascade=CascadeType.ALL)
private List<UsuarioBean> usuarios;
ele esta atribuindo o valor de zero para o código
porque isso ocorre!?
Cara, não tenho certeza mas eu acho que se você não especificar a sequência que ele terá que utilizar no banco, no caso uma sequência criada por você no banco de dados direto, ele vai gerar a sequência para poder gerar os ids da forma dele, o que não garante que a ordem de criação da sequência será gerada de 1 em 1. Entendeu?
Eu acho que é isso mas vamos aguardar outras opiniões do pessoal mais por dentro do assunto.
consegui fazer!
@Entity
@Table(name="equipe", schema="public")
@SequenceGenerator(name="seq_equipe", sequenceName="seq_equipe")
public class EquipeBean implements Serializable {
private static final long serialVersionUID = 4157547012821652450L;
@Id
@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="seq_equipe")
@Column(name="cod_equipe")
private Integer codEquipe;
deu certo, mais nem tanto
ele não esta pegando o nextval do banco ele esta gerando uns numeros diferentes!
o que pode estar errado?
alguem poderia me ajudar?