Saudações a todos!
Estou com uma dificuldade ao atualizar um elemento no meu sistema, cujo erro é o seguinte:
Exception in thread “AWT-EventQueue-0” java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
at java.util.ArrayList.rangeCheck(ArrayList.java:638)
at java.util.ArrayList.get(ArrayList.java:414)
at controlador.ControlAreaFormacao.alterar(ControlAreaFormacao.java:196)
at visao.TelaConfigAreaFormacaos.btnGravarActionPerformed(TelaConfigAreaFormacaos.java:223)
at visao.TelaConfigAreaFormacaos.access$200(TelaConfigAreaFormacaos.java:19)
at visao.TelaConfigAreaFormacaos$3.actionPerformed(TelaConfigAreaFormacaos.java:132)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2346)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
at java.awt.Component.processMouseEvent(Component.java:6527)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)
at java.awt.Component.processEvent(Component.java:6292)
at java.awt.Container.processEvent(Container.java:2234)
at java.awt.Component.dispatchEventImpl(Component.java:4883)
at java.awt.Container.dispatchEventImpl(Container.java:2292)
at java.awt.Component.dispatchEvent(Component.java:4705)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4898)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4533)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4462)
at java.awt.Container.dispatchEventImpl(Container.java:2278)
at java.awt.Window.dispatchEventImpl(Window.java:2739)
at java.awt.Component.dispatchEvent(Component.java:4705)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:746)
at java.awt.EventQueue.access$400(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:697)
at java.awt.EventQueue$3.run(EventQueue.java:691)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:86)
at java.awt.EventQueue$4.run(EventQueue.java:719)
at java.awt.EventQueue$4.run(EventQueue.java:717)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:716)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
O Método esta aqui:
public void alterar(TelaConfigAreaFormacaos tcaf) {
// try {
if (this.validarFormulario(tcaf)) {
if (this.validarAreaFormacao(tcaf)) {
String afs = tcaf.getTxtAreaFormacao().getText().trim();
String ne = (String) tcaf.getCbxAreaFormacao().getSelectedItem();
// int idOculto=Integer.valueOf(tcaf.getTxtIdAreaFormacao().getText().trim());
List ltAreaFormacao = this.afd.obterAfNielEnsino(afs, ne);
AreaFormacao af = ltAreaFormacao.get(0);
// AreaFormacao af=new AreaFormacao(idOculto);
af.setDesignacaoareaFormacao(tcaf.getTxtAreaFormacao().getText().trim());
af.setAbreviacaoAreaFormacao(tcaf.getTxtAbAFormacao().getText().trim());
List ltne = this.ned.obterDesigNivelensino(ne);
af.setNivelensino(ltne.get(0));
this.afd.actualizarEntidade(af);
this.limparFormulario(tcaf);
JOptionPane.showMessageDialog(this.flutuante(), “Alterado com sucesso…” + af.getDesignacaoareaFormacao(), "Erro: ", JOptionPane.INFORMATION_MESSAGE);
}
}
// } catch (Exception erro) {
// JOptionPane.showMessageDialog(this.flutuante(), “Erro ao alterar…” + erro.getMessage(), "Erro: ", JOptionPane.ERROR_MESSAGE);
// }
}
Classe de consulta:
private int obterIdNEnsino(String ne) {
NivelEnsinoDao ned = new NivelEnsinoDao();
List ltne = ned.obterDesigNivelensino(ne);
return ltne.get(0).getIdnivelensino();
}
public List<AreaFormacao> obterAfNielEnsino(String desigAreaFormacao, String nivelEnsino) {
this.sessao = HibernateUtil.HibernateUtil.getSessionFactory().openSession();
this.trn = this.sessao.beginTransaction();
int idNEnsino = this.obterIdNEnsino(nivelEnsino);
Query sql = this.sessao.createQuery("From AreaFormacao where designacaoareaFormacao=:desigAreaFormacao and idnivelensino=:idNEnsino");
sql.setString("desigAreaFormacao", desigAreaFormacao);
sql.setInteger("idNEnsino", idNEnsino);
List<AreaFormacao> lista = sql.list();
this.sessao.close();
this.trn.commit();
return lista;
}
Classe do modelo:
@Entity
@Table(name = “area_formacao”,
schema = “public”
)
public class AreaFormacao implements java.io.Serializable {
private int idareaFormacao;
private Nivelensino nivelensino;
private String abreviacaoAreaFormacao;
private String designacaoareaFormacao;
private Set<CoordenacaoArea> coordenacaoAreas = new HashSet<CoordenacaoArea>(0);
private Set<Curso> cursos = new HashSet<Curso>(0);
public AreaFormacao() {
}
public AreaFormacao(int idareaFormacao) {
this.idareaFormacao = idareaFormacao;
}
public AreaFormacao(int idareaFormacao, Nivelensino nivelensino) {
this.idareaFormacao = idareaFormacao;
this.nivelensino = nivelensino;
}
public AreaFormacao(int idareaFormacao, Nivelensino nivelensino, String abreviacaoAreaFormacao, String designacaoareaFormacao, Set<CoordenacaoArea> coordenacaoAreas, Set<Curso> cursos) {
this.idareaFormacao = idareaFormacao;
this.nivelensino = nivelensino;
this.abreviacaoAreaFormacao = abreviacaoAreaFormacao;
this.designacaoareaFormacao = designacaoareaFormacao;
this.coordenacaoAreas = coordenacaoAreas;
this.cursos = cursos;
}
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "idarea_formacao", unique = true, nullable = false)
public int getIdareaFormacao() {
return this.idareaFormacao;
}
public void setIdareaFormacao(int idareaFormacao) {
this.idareaFormacao = idareaFormacao;
}
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "idnivelensino", nullable = false)
public Nivelensino getNivelensino() {
return this.nivelensino;
}
public void setNivelensino(Nivelensino nivelensino) {
this.nivelensino = nivelensino;
}
@Column(name = "abreviacao_area_formacao")
public String getAbreviacaoAreaFormacao() {
return this.abreviacaoAreaFormacao;
}
public void setAbreviacaoAreaFormacao(String abreviacaoAreaFormacao) {
this.abreviacaoAreaFormacao = abreviacaoAreaFormacao;
}
@Column(name = "designacaoarea_formacao")
public String getDesignacaoareaFormacao() {
return this.designacaoareaFormacao;
}
public void setDesignacaoareaFormacao(String designacaoareaFormacao) {
this.designacaoareaFormacao = designacaoareaFormacao;
}
@OneToMany(fetch = FetchType.LAZY, mappedBy = "areaFormacao")
public Set<CoordenacaoArea> getCoordenacaoAreas() {
return this.coordenacaoAreas;
}
public void setCoordenacaoAreas(Set<CoordenacaoArea> coordenacaoAreas) {
this.coordenacaoAreas = coordenacaoAreas;
}
@OneToMany(fetch = FetchType.LAZY, mappedBy = "areaFormacao")
public Set<Curso> getCursos() {
return this.cursos;
}
public void setCursos(Set<Curso> cursos) {
this.cursos = cursos;
}
@Override
public String toString() {
return designacaoareaFormacao;
}
}