2
Talk guys! I’m busting my chops here on my TCC and I need your help.
I know the trouble I’m in must be very silly, but I don’t have much knowledge. I searched everywhere, JPQL documentation and everything, but I couldn’t fix it.
I need to log in to the system, searching matricula in class Pessoa and senha in class Usuario, but I’m having trouble creating the JPQL query
Method login of my bean of Usuario
public void login() {
try {
usuarioLogado = usuarios.login(usuario.getPessoa().getMatricula(), usuario.getSenha());
System.out.println("MATRICULA: "+ getMatricula() + "SENHA: " + usuario.getSenha());
if (usuarioLogado == null) {
messages.info("CPF e/ou senha incorretos");
return;
}
Faces.redirect("./paginas/Index.xhtml");
} catch (IOException erro) {
erro.printStackTrace();
Messages.addGlobalError(erro.getMessage());
}
}
Method login that queries the database that is called from the repository Usuarios
public Usuario login(Long matricula, String senha) {
try {
Usuario usuario = (Usuario) manager
.createQuery(
"SELECT u from Usuario u where u.pessoa.matricula = :matricula and u.senha = :senha ")
.setParameter("matricula", matricula)
.setParameter("senha", senha).getSingleResult();
return usuario;
} catch (NoResultException e) {
return null;
}
}
Pessoa.java
package com.daniel.monografia.model;
import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.validation.constraints.NotNull;
import org.hibernate.validator.constraints.Email;
@Entity
@Table(name="pessoa")
public class Pessoa implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(length = 50, nullable = false)
private String nome;
@Column(length = 100, nullable = false)
@Email
private String email;
@NotNull
@Column(nullable = false, length = 8)
private Long matricula;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public Long getMatricula() {
return matricula;
}
public void setMatricula(Long matricula) {
this.matricula = matricula;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((id == null) ? 0 : id.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Pessoa other = (Pessoa) obj;
if (id == null) {
if (other.id != null)
return false;
} else if (!id.equals(other.id))
return false;
return true;
}
@Override
public String toString() {
return "Pessoa [id=" + id + "]";
}
}
Java user.
package com.daniel.monografia.model;
import java.io.Serializable;
import java.util.Date;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToOne;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.persistence.Transient;
import javax.validation.constraints.NotNull;
import org.hibernate.validator.constraints.NotEmpty;
@Entity
@Table(name="usuario")
public class Usuario implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@NotEmpty
@Column(nullable = false, length = 8)
private String senha;
@Column(nullable = false)
private Character tipo;
@OneToOne
@JoinColumn(nullable = false)
private Pessoa pessoa;
//Campos para usar no envio de email
@Transient
private String usuarioEmail = "[email protected]";
@Transient
private String senhaEmail = "monografia123";
@Transient
private String assunto;
@Transient
private String mensagem;
public Usuario() {
}
public Usuario(Long matricula, String senha) {
this.senha = senha;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getSenha() {
return senha;
}
public void setSenha(String senha) {
this.senha = senha;
}
public String getUsuarioEmail() {
return usuarioEmail;
}
public void setUsuarioEmail(String usuarioEmail) {
this.usuarioEmail = usuarioEmail;
}
public String getSenhaEmail() {
return senhaEmail;
}
public void setSenhaEmail(String senhaEmail) {
this.senhaEmail = senhaEmail;
}
public String getAssunto() {
return assunto;
}
public void setAssunto(String assunto) {
this.assunto = assunto;
}
public String getMensagem() {
return mensagem;
}
public void setMensagem(String mensagem) {
this.mensagem = mensagem;
}
public Character getTipo() {
return tipo;
}
public void setTipo(Character tipo) {
this.tipo = tipo;
}
public Pessoa getPessoa() {
return pessoa;
}
public void setPessoa(Pessoa pessoa) {
this.pessoa = pessoa;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((id == null) ? 0 : id.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Usuario other = (Usuario) obj;
if (id == null) {
if (other.id != null)
return false;
} else if (!id.equals(other.id))
return false;
return true;
}
@Override
public String toString() {
return "Usuario [id=" + id + "]";
}
}
And what’s the problem? The query seems correct.
– Dherik