Quantcast
Channel: GUJ - Tópicos com a tag java
Viewing all articles
Browse latest Browse all 17410

Erro na inserção de dados no banco de dados:Can not set int field... to java.lang.String

$
0
0

@LeoRDS escreveu:

Olá pessoal!
Estou tentando inserir dados em uma tabela de relacionamento muitos para muitos, a aplicação é um sistema escolar, e estou inserindo uma turma e seus respectivos alunos no banco de dados, para isso estou usando o picklist do primefaces para puxar todos os alunos cadastrados no banco de dados, e selecionar só os que eu quero que façam parte da turma. Eu consigo inserir todas as informações normalmente, no console do eclipse eu consigo identificar o insert que ele dá na table Turma, só que na hora de dar o insert na tabela de relacionamento Turma_Alunos, apresenta o seguintes Erro: Caused by: java.lang.IllegalArgumentException: Can not set int field br.com.digitaltech.model.Aluno.id to java.lang.String

**Erro completo**
>     GRAVE: JSF1073: javax.faces.event.AbortProcessingException obtido durante o processamento de INVOKE_APPLICATION 5: UIComponent-ClientId=j_idt18:j_idt34, Message=javax.persistence.RollbackException: Error while committing the transaction
>     ago 28, 2016 7:58:28 PM com.sun.faces.context.AjaxExceptionHandlerImpl log
>     GRAVE: javax.persistence.RollbackException: Error while committing the transaction
>     javax.faces.event.AbortProcessingException: javax.persistence.RollbackException: Error while committing the transaction
>         at javax.faces.event.MethodExpressionActionListener.processAction(MethodExpressionActionListener.java:182)
>         at javax.faces.event.ActionEvent.processListener(ActionEvent.java:88)
>         at javax.faces.component.UIComponentBase.broadcast(UIComponentBase.java:772)
>         at javax.faces.component.UICommand.broadcast(UICommand.java:300)
>         at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:775)
>         at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1267)
>         at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:82)
>         at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
>         at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
>         at javax.faces.webapp.FacesServlet.service(FacesServlet.java:312)
>         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
>         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
>         at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
>         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
>         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
>         at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:218)
>         at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
>         at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505)
>         at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169)
>         at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
>         at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:956)
>         at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
>         at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:442)
>         at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1082)
>         at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:623)
>         at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316)
>         at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
>         at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
>         at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
>         at java.lang.Thread.run(Unknown Source)
>     Caused by: javax.persistence.RollbackException: Error while committing the transaction
>         at org.hibernate.ejb.TransactionImpl.commit(TransactionImpl.java:93)
>         at br.com.digitaltech.dao.TurmaDAO.insert(TurmaDAO.java:26)
>         at br.com.digitaltech.business.TurmaSB.insert(TurmaSB.java:16)
>         at br.com.digitaltech.view.TurmaMB.doInsert(TurmaMB.java:46)
>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>         at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
>         at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
>         at java.lang.reflect.Method.invoke(Unknown Source)
>         at org.apache.el.parser.AstValue.invoke(AstValue.java:279)
>         at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:273)
>         at javax.faces.event.MethodExpressionActionListener.processAction(MethodExpressionActionListener.java:153)
>         ... 29 more
>     Caused by: javax.persistence.PersistenceException: org.hibernate.PropertyAccessException: could not get a field value by reflection getter of br.com.digitaltech.model.Aluno.id
>         at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1179)
>         at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1112)
>         at org.hibernate.ejb.TransactionImpl.commit(TransactionImpl.java:81)
>         ... 39 more
>     Caused by: org.hibernate.PropertyAccessException: could not get a field value by reflection getter of br.com.digitaltech.model.Aluno.id
>         at org.hibernate.property.DirectPropertyAccessor$DirectGetter.get(DirectPropertyAccessor.java:62)
>         at org.hibernate.tuple.entity.AbstractEntityTuplizer.getIdentifier(AbstractEntityTuplizer.java:230)
>         at org.hibernate.persister.entity.AbstractEntityPersister.getIdentifier(AbstractEntityPersister.java:3852)
>         at org.hibernate.persister.entity.AbstractEntityPersister.isTransient(AbstractEntityPersister.java:3560)
>         at org.hibernate.engine.ForeignKeys.isTransient(ForeignKeys.java:204)
>         at org.hibernate.engine.ForeignKeys.getEntityIdentifierIfNotUnsaved(ForeignKeys.java:243)
>         at org.hibernate.type.EntityType.getIdentifier(EntityType.java:449)
>         at org.hibernate.type.ManyToOneType.nullSafeSet(ManyToOneType.java:132)
>         at org.hibernate.persister.collection.AbstractCollectionPersister.writeElement(AbstractCollectionPersister.java:816)
>         at org.hibernate.persister.collection.AbstractCollectionPersister.recreate(AbstractCollectionPersister.java:1204)
>         at org.hibernate.action.CollectionRecreateAction.execute(CollectionRecreateAction.java:58)
>         at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:268)
>         at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:260)
>         at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:183)
>         at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:321)
>         at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:51)
>         at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1206)
>         at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:375)
>         at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:137)
>         at org.hibernate.ejb.TransactionImpl.commit(TransactionImpl.java:76)
>         ... 39 more
>     Caused by: java.lang.IllegalArgumentException: Can not set int field br.com.digitaltech.model.Aluno.id to java.lang.String
>         at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(Unknown Source)
>         at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(Unknown Source)
>         at sun.reflect.UnsafeFieldAccessorImpl.ensureObj(Unknown Source)
>         at sun.reflect.UnsafeIntegerFieldAccessorImpl.getInt(Unknown Source)
>         at sun.reflect.UnsafeIntegerFieldAccessorImpl.get(Unknown Source)
>         at java.lang.reflect.Field.get(Unknown Source)
>         at org.hibernate.property.DirectPropertyAccessor$DirectGetter.get(DirectPropertyAccessor.java:59)
>         ... 58 more

View
package br.com.digitaltech.view;

import java.util.ArrayList;
import java.util.List;

import javax.annotation.PostConstruct;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.context.FacesContext;

import org.primefaces.model.DualListModel;

import lombok.Getter;
import lombok.Setter;
import br.com.digitaltech.business.AlunoSB;
import br.com.digitaltech.business.CursoSB;
import br.com.digitaltech.business.TurmaSB;
import br.com.digitaltech.enums.PeriodoEnum;
import br.com.digitaltech.model.Aluno;
import br.com.digitaltech.model.Curso;
import br.com.digitaltech.model.Turma;

@Getter
@Setter
@ManagedBean
public class TurmaMB {
    private Turma edit = new Turma();
    private List<Curso> cursos;
    private PeriodoEnum[] periodos;
    private DualListModel<Aluno> alunos = null;
    private CursoSB cursoSB = new CursoSB();
    private TurmaSB turmaSB = new TurmaSB();
    private AlunoSB alunoSB = new AlunoSB();
    
    @PostConstruct
    public void doSelectMenu() {
        periodos = PeriodoEnum.values();
        cursos = cursoSB.findAll();
        List<Aluno> source = alunoSB.findAll();
        List<Aluno> target = new ArrayList<Aluno>();
        alunos = new DualListModel<Aluno>(source, target);
    }

    public void doInsert() {
        edit.setAlunos(alunos.getTarget());
        turmaSB.insert(edit);

        FacesContext ctx = FacesContext.getCurrentInstance();
        ctx.addMessage(null, new FacesMessage("Turma Inserida com Sucesso."));
    }
}

Classe Turma

package br.com.digitaltech.model;

import java.util.List;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.ManyToOne;
import javax.persistence.Table;

import br.com.digitaltech.enums.PeriodoEnum;
import lombok.Getter;
import lombok.Setter;

@Getter
@Setter
@Entity
@Table(name = "TBL_TURMA")
public class Turma {
    @Column(name = "ID_TURMA")
    @Id
    @GeneratedValue
    private int id;

    @Column(name = "TX_NOME")
    private String nome;

    @JoinColumn(name = "ID_CURSO")
    @ManyToOne
    private Curso curso = new Curso();

    @Column(name="NR_PERIODO")
    @Enumerated(EnumType.ORDINAL)
    private PeriodoEnum periodo;

    // Relacionamentos N para N

    @JoinTable(name = "TBL_TURMA_ALUNO", joinColumns = { @JoinColumn(name = "ID_TURMA") }, inverseJoinColumns = { @JoinColumn(name = "ID_ALUNO") })
    @ManyToMany
    private List<Aluno> alunos;
}

Classe Alunos
package br.com.digitaltech.model;

import java.util.Date;
import java.util.List;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.persistence.Transient;

import lombok.Getter;
import lombok.Setter;

@Getter
@Setter
@Entity
@Table(name = "TBL_ALUNO")
public class Aluno {
    @Column(name = "ID_ALUNO")
    @Id
    @GeneratedValue
    private int id;

    @JoinColumn(name = "ID_CURSO")
    @ManyToOne
    private Curso curso;

    @JoinColumn(name = "ID_MODULO")
    @ManyToOne
    private Modulo modulo;

    @Column(name = "TX_NOME_ALUNO")
    private String nome;

    @Column(name = "TX_CPF")
    private String cpf;

    @Column(name = "DT_DATA_NASCIMENTO")
    @Temporal(TemporalType.DATE)
    private Date dataNascimento;

    @Column(name = "DT_DATA_MATRICULA")
    @Temporal(TemporalType.DATE)
    private Date dataMatricula;
    
    @Column(name = "TX_TELEFONE")
    private String telefone;

    @Column(name = "TX_EMAIL")
    private String email;

    @Column(name = "TX_ENDERECO")
    private String endereco;

    @Transient
    private int impressaoDigital;

    @Transient
    private int faltas;

    // Relacionamento N pra N

    @JoinTable(name = "TBL_TURMA_ALUNO",
            joinColumns = { @JoinColumn(name = "ID_ALUNO") },
            inverseJoinColumns = { @JoinColumn(name = "ID_TURMA") })
    @ManyToMany
    private List<Turma> turmas;
    
    @JoinTable(name = "TBL_ALUNO_MATERIA",
            joinColumns = { @JoinColumn(name = "ID_ALUNO") },
            inverseJoinColumns = { @JoinColumn(name = "ID_MATERIA") })
    @ManyToMany
    private List<Materia> materias;
}

Será que está faltando algo?

Mensagens: 9

Participantes: 4

Ler tópico completo


Viewing all articles
Browse latest Browse all 17410

Latest Images

Trending Articles

<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>