@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: 4
Participantes: 2