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!