Duplicate query named "Usuario.getUsuarioByLoginSenha" defined in this persistence unit

2 respostas
J

Pessoal,
Estou estudando algumas coisas de EJB3 + JPA + Hibernate etc.
Criei um banco de dados e lá tem uma table Usuario:

mysql> desc usuario;
+-----------------+------------------+------+-----+---------+----------------+
| Field           | Type             | Null | Key | Default | Extra          |
+-----------------+------------------+------+-----+---------+----------------+
| id_usuario      | int(10) unsigned | NO   | PRI | NULL    | auto_increment |
| nome_usuario    | varchar(200)     | NO   |     | NULL    |                |
| login_usuario   | varchar(45)      | NO   |     | NULL    |                |
| senha_usuario   | varchar(16)      | NO   |     | NULL    |                |
| id_tipo_usuario | int(10) unsigned | NO   | MUL | NULL    |                |
+-----------------+------------------+------+-----+---------+----------------+

No Java tenho uma entity:

@NamedQuery(
		name="Usuario.getUsuarioByLoginSenha",
		query="select u from Usuario u where u.loginUsuario= :login and u.senhaUsuario= :senha"
)

@Entity
@Table(name = "usuario", catalog = "ponto", schema = "Ponto")
public class Usuario implements java.io.Serializable {

	private static final long serialVersionUID = 8732884991804117797L;
	private EntityManager entityManager;
	private Integer idUsuario;
	private TipoUsuario tipoUsuario;
	private String nomeUsuario;
	private String loginUsuario;
	private String senhaUsuario;
	private Set<Ponto> pontos = new HashSet<Ponto>(0);

	public Usuario() {
	}

	public Usuario(TipoUsuario tipoUsuario, String nomeUsuario,
			String loginUsuario, String senhaUsuario) {
		this.tipoUsuario = tipoUsuario;
		this.nomeUsuario = nomeUsuario;
		this.loginUsuario = loginUsuario;
		this.senhaUsuario = senhaUsuario;
	}

	public Usuario(TipoUsuario tipoUsuario, String nomeUsuario,
			String loginUsuario, String senhaUsuario, Set<Ponto> pontos) {
		this.tipoUsuario = tipoUsuario;
		this.nomeUsuario = nomeUsuario;
		this.loginUsuario = loginUsuario;
		this.senhaUsuario = senhaUsuario;
		this.pontos = pontos;
	}

	@Id
	@GeneratedValue(strategy = IDENTITY)
	@Column(name = "id_usuario", unique = true, nullable = false)
	public Integer getIdUsuario() {
		return this.idUsuario;
	}

	public void setIdUsuario(Integer idUsuario) {
		this.idUsuario = idUsuario;
	}

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "id_tipo_usuario", nullable = false)
	public TipoUsuario getTipoUsuario() {
		return this.tipoUsuario;
	}

	public void setTipoUsuario(TipoUsuario tipoUsuario) {
		this.tipoUsuario = tipoUsuario;
	}

	@Column(name = "nome_usuario", nullable = false, length = 200)
	public String getNomeUsuario() {
		return this.nomeUsuario;
	}

	public void setNomeUsuario(String nomeUsuario) {
		this.nomeUsuario = nomeUsuario;
	}

	@Column(name = "login_usuario", nullable = false, length = 45)
	public String getLoginUsuario() {
		return this.loginUsuario;
	}

	public void setLoginUsuario(String loginUsuario) {
		this.loginUsuario = loginUsuario;
	}

	@Column(name = "senha_usuario", nullable = false, length = 16)
	public String getSenhaUsuario() {
		return this.senhaUsuario;
	}

	public void setSenhaUsuario(String senhaUsuario) {
		this.senhaUsuario = senhaUsuario;
	}

	@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "usuario")
	public Set<Ponto> getPontos() {
		return this.pontos;
	}

	public void setPontos(Set<Ponto> pontos) {
		this.pontos = pontos;
	}
	
	public Usuario getUserByLoginPassword(Usuario user) {
		try {
			Query query = entityManager.createNamedQuery("Usuario.getUsuarioByLoginSenha");
			query.setParameter("login", user.getLoginUsuario());
			query.setParameter("senha", user.getSenhaUsuario());
			
			user = (Usuario)query.getSingleResult();
			
			return user;
		}catch (Exception e) {
			e.printStackTrace();
		}
		return null;
	}

}

Mas é aí que entra o problema… tá dando um erro dizendo que:

Duplicate query named "Usuario.getUsuarioByLoginSenha" defined in this persistence unit

Mas é óbvio que eu não tenho outra NamedQuery com este nome… na verdade não tenho mais NENHUMA outra NamedQuery neste projeto ainda…

Será que alguém pode me dar uma força ai?

Obrigado galera!

2 Respostas

Lavieri

olhe as outras entitys… ou debug para encontrar o erro…

as vezes, por força de CTRL+C e CTRL+V … acaba indo uma named quary igual pra outro lugar… e da esse erro…

se usar alguam ide meia boca, é so dar um Find no projeto pela named quary

J

Lavieri:
olhe as outras entitys… ou debug para encontrar o erro…

as vezes, por força de CTRL+C e CTRL+V … acaba indo uma named quary igual pra outro lugar… e da esse erro…

se usar alguam ide meia boca, é so dar um Find no projeto pela named quary

Lavieri,

Conforme descrevi na pergunta não existe outra NamedQuery em nenhum lugar deste projeto, esta seria a primeira e não importa qual nome eu dê pra ela, o Debug sempre me devolve o mesmo erro, dizendo que o nome está duplicado!

Receio que haja alguma configuração incorreta ou um bug mesmo!

Obrigado pela ajuda!!!

Criado 2 de abril de 2009
Ultima resposta 2 de abr. de 2009
Respostas 2
Participantes 2