0
Hello, everyone. I am creating a project that handles user registration. In this project there will be several types of users. To simplify, let’s call the types 1,2 and 3. Depending on the type of user, are changed the screens and features that it can access.
To begin with, I have to explain about the table structure of my database. In my database I have a table called "user" where the user data is stored (name, Cpf, rg, etc...) and a table called "group" that stores the types of groups 1, 2, 3 and the description of the groups. And then, there is a table called "usuario_grupo" that associates the table "usuario" and "group".
The subject I am dealing with is the following: when a new user is registered, I am trying to insert in the table "usuario_grupo" a new record that associates the user id and the group id of this user. But I’m having a hard time building the sql code. When I run the code the error appears:
Unexpected token: values
I am sending the main files that deal with user registration.
User registration.java.
@Named
@ViewScoped
public class CadastroUsuarioBean implements Serializable {
private static final long serialVersionUID = 1L;
@Inject
private UsuariosRep usuariosRep;
@Inject
private EstadosRep estadosRep;
@Inject
private CidadeRep cidadeRep;
@Inject
private CadastroUsuarioService cadastroUsuarioService;
private Usuario usuario;
private Estado categoriaPai;
private Estado estado;
private Cidade cidade;
private String email;
private List<SelectItem> listEstados;
private List<SelectItem> listCidades;
public CadastroUsuarioBean() {
limpar();
}
public boolean isEditando() {
boolean resultado = false;
if (this.usuario != null) {
resultado = usuario.getId() != null;
}
return resultado;
}
public void inicializar() {
listEstados = new ArrayList<SelectItem>();
List<Estado> estados = estadosRep.raizes();
for (Estado e : estados) {
SelectItem item = new SelectItem();
item.setLabel(e.getEstado_sigla());
item.setValue(e);
listEstados.add(item);
}
if(!isEditando())
{
usuario.setStatus("Ativo");
}
if (this.estado != null) {
estados = estadosRep.raizes();
}
}
public void limpar() {
usuario = new Usuario();
listEstados = new ArrayList<SelectItem>();
}
public void salvar() {
if (usuariosRep.porCpf(this.usuario.getCpf()) != null){
FacesUtil.addInfoMessage("Este CPF já existe!");
}
else{
usuariosRep.InserirTabelaUsuarioGrupo(this.usuario.getId());
this.usuario = cadastroUsuarioService.salvar(this.usuario);
limpar();
FacesUtil.addInfoMessage("Cadastro de usuário efetuado com sucesso!");
}
}
public void carregarCidades(){
listCidades = new ArrayList<SelectItem>();
List<Cidade> cidades = cidadeRep.cidadesDe(usuario.getEstado());
for (Cidade c : cidades) {
SelectItem item = new SelectItem();
item.setLabel(c.getCidadeNome());
item.setValue(c);
listCidades.add(item);
}
}
public Usuario getUsuario() {
return usuario;
}
public void setUsuario(Usuario usuario) {
this.usuario = usuario;
}
public Estado getEstado() {
return estado;
}
public void setEstado(Estado estado) {
this.estado = estado;
}
public List<SelectItem> getListEstados() {
return listEstados;
}
public void setListEstados(List<SelectItem> listEstados) {
this.listEstados = listEstados;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String register() {
return "thanks?faces-redirect=true";
}
public Estado getCategoriaPai() {
return categoriaPai;
}
public void setCategoriaPai(Estado categoriaPai) {
this.categoriaPai = categoriaPai;
}
public Cidade getCidade() {
return cidade;
}
public void setCidade(Cidade cidade) {
this.cidade = cidade;
}
public List<SelectItem> getListCidades() {
return listCidades;
}
public void setListCidades(List<SelectItem> listCidades) {
this.listCidades = listCidades;
}
public UsuariosRep getUsuariosRep() {
return usuariosRep;
}
public void setUsuariosRep(UsuariosRep usuariosRep) {
this.usuariosRep = usuariosRep;
}
}
Cadastrousuarioservice.java
public class CadastroUsuarioService implements Serializable {
private static final long serialVersionUID = 1L;
@Inject
private UsuariosRep usuarios;
public Usuario salvar(Usuario usuario) {
return usuarios.guardar(usuario);
}
@Transactional
public void excluir(Usuario usuario) throws NegocioException {
usuario = this.usuarios.porNome(usuario.getNome());
this.usuarios.remover(usuario);
}
}
Usuariosrep.java
public class UsuariosRep implements Serializable {
private static final long serialVersionUID = 1L;
@Inject
private EntityManager manager;
public Usuario guardar(Usuario usuario) {
EntityTransaction trx = manager.getTransaction();
trx.begin();
usuario = manager.merge(usuario);
trx.commit();
return usuario;
}
public Usuario porCpf(String cpf){
Usuario usuario = null;
try{
usuario = this.manager.createQuery("from Usuario where cpf = :cpf", Usuario.class)
.setParameter("cpf", cpf).getSingleResult();
}catch (NoResultException e){
// Nenhum usuario encontrado com o nome informado.
}
return usuario;
}
public Usuario porNome(String nome) {
Usuario usuario = null;
try{
usuario = this.manager.createQuery("from Usuario where lower(nome) = :nome", Usuario.class)
.setParameter("nome", nome.toLowerCase()).getSingleResult();
}catch (NoResultException e){
// Nenhum usuario encontrado com o nome informado.
}
return usuario;
}
public void InserirTabelaUsuarioGrupo(Long id){
Usuario usuario = null;
usuario = (Usuario) this.manager.createQuery("Insert into usuario_grupo(usuario_id,grupo_id) values(id,1)");
}
public Usuario porId(Long id)
{
return manager.find(Usuario.class, id);
}
public List<Usuario> listaDeUsu()
{
return manager.createQuery("from Usuario", Usuario.class).getResultList();
}
public List<Usuario> raizes()
{
return manager.createQuery("from Usuario",Usuario.class).getResultList();
}
@SuppressWarnings("unchecked")
public List<Usuario> filtrados(UsuarioFilter filtro) {
Session session = manager.unwrap(Session.class);
Criteria criteria = session.createCriteria(Usuario.class);
if (filtro.getNome() != "")
{
System.out.println(filtro.getNome());
criteria.add(Restrictions.eq("nome", filtro.getNome()));
}
if (filtro.getStatus() != null)
{
criteria.add(Restrictions.eq("status", filtro.getStatus()));
}
// orderBy do SQL
return criteria.addOrder(Order.asc("id")).list();
}
public void remover(Usuario usuario) {
this.manager.remove(usuario);
EntityTransaction trx = manager.getTransaction();
trx.begin();
manager.flush();
trx.commit();
}
public Usuario porEmail(String email) {
Usuario usuario = null;
try{
usuario = this.manager.createQuery("from Usuario where lower(email) = :email", Usuario.class)
.setParameter("email", email.toLowerCase()).getSingleResult();
}
catch (NoResultException e){
FacesUtil.addErrorMessage("Nenhum usuário encontrado");
}
return usuario;
}
}
Among the codes, in Usuariosrep.java you will find a method called Inserirtabelausuarupo. This is the method I am using to insert a new record in the "user group" table. And in Cadastrousuariobean.java, in the method "save" is being called the method Inserirtabelausuarupo.
In Insertabelausuarupo you will see that I am inserting 1 as the group id. I am inserting 1 only for test purposes. After solving this error, I intend to insert dynamically.
I appreciate any advice or opinion.
You want what at last?
– viana