Do not re-enter a user with an existing login

0

I have a problem with JPA with Java.

I made a login system, using a self-generated ID, but every time I run the program it creates another user in the database, with a different id but same credentials.

How do I, if this user login already exists, does not create an equal one?

Method that starts with the application:

public void startApp() {

    service = new Service<List<Usuario>>() {
        @Override
        protected Task<List<Usuario>> createTask() {
            return new Task<List<Usuario>>() {
                @Override
                protected List<Usuario> call() throws Exception {

                   Usuario user = new Usuario();
                    user.setNome("Usuario");
                    user.setLogin("user");
                    user.setSenha("123");

                    UsuarioDAO usuarioDAO = new UsuarioDAO();
                    usuarioDAO.inserir(user);
                    return usuarioDAO.obterLista();
                }
            };
        }
    };

JPA Insert Method

public boolean inserir(Usuario usuario) {
    try {
        entidadeGerenciamento.getTransaction().begin();              
        entidadeGerenciamento.persist(usuario);
        entidadeGerenciamento.getTransaction().commit(); 
        return true;
    
asked by anonymous 23.11.2018 / 03:00

1 answer

0

You could check if the user, based on the login, already exists before inserting.

public boolean usuarioExistente(Usuario usuario) {
    try {
        Usuario usuario = (Usuario) entidadeGerenciamento.createQuery("SELECT u FROM Usuario u WHERE u.login LIKE :login").setParameter("login", "%" + usuario.getLogin() + "%").getSingleResult();
        return true; // Se encontrou registro, então OK!
    } catch (NoResultException ex) {
       return false; // Caso não exista registro
    }
}

And your code to insert could do something:

public boolean inserir(Usuario usuario) {
  if (this.usuarioExistente(usuario)) { 
    return false;
  }
  try {
     entidadeGerenciamento.getTransaction().begin();              
     entidadeGerenciamento.persist(usuario);
     entidadeGerenciamento.getTransaction().commit(); 
     return true;
  } // continuação do código
    
23.11.2018 / 04:46