Hi, i have a problem with an Entity. When I edit a Cliente and I create a new Attività all works fine, I can add many Attività. After that I tried to add other Entity like Appezzamenti, and when I try to save Cliente I get This Error:
ClassCastException: class com.company.innoagri.entity.Attivita cannot be cast to class org.eclipse.persistence.descriptors.changetracking.ChangeTracker
if I remove all Attività then I can save other entity related to Cliente like Appezzamento or ListinoCliente etc… What I’m doing wrong?
if I try to remove Attività from Cliente I get:
IllegalStateException: The entity 'com.company.innoagri.entity.Attivita-1816 [managed]' is is not a ChangeTracker
The problem seems to be only in the Composition Relationship
Thanks
@JmixEntity
@Table(name = "CLIENTE")
@Entity
public class Cliente {
@JmixGeneratedValue
@Column(name = "ID", nullable = false)
@Id
private Long id;
@OnDelete(DeletePolicy.CASCADE)
@Composition
@OneToMany(mappedBy = "cliente")
private List<Fattura> fatture;
@Column(name = "SOCIETA")
private Boolean societa;
@Column(name = "DISATTIVATO")
private Boolean disattivato;
@OnDelete(DeletePolicy.CASCADE)
@Composition
@OneToMany(mappedBy = "cliente")
private List<ListinoCliente> listini;
@OnDelete(DeletePolicy.CASCADE)
@Composition
@OneToMany(mappedBy = "cliente")
private List<Appezzamento> appezzamenti;
@CaseConversion
@Column(name = "RAGIONE_SOCIALE")
private String ragioneSociale;
@CaseConversion
@Column(name = "NOME")
private String nome;
@CaseConversion
@Column(name = "COGNOME")
private String cognome;
@CaseConversion
@Column(name = "PIVA")
private String piva;
@CaseConversion
@Column(name = "CODICE_FISCALE")
private String codiceFiscale;
@Column(name = "TELEFONO")
private String telefono;
@Column(name = "CELLULARE")
private String cellulare;
@Column(name = "LOCALITA")
private String localita;
@Column(name = "INDIRIZZO")
private String indirizzo;
@Column(name = "COMUNE")
private String comune;
@Column(name = "CAP", length = 5)
private String cap;
@CaseConversion
@Column(name = "PROVINCIA", length = 2)
private String provincia;
@Column(name = "EMAIL")
private String email;
@Column(name = "PEC")
private String pec;
@Column(name = "VERSION", nullable = false)
@Version
private Integer version;
@CreatedBy
@Column(name = "CREATED_BY")
private String createdBy;
@CreatedDate
@Column(name = "CREATED_DATE")
@Temporal(TemporalType.TIMESTAMP)
private Date createdDate;
@LastModifiedBy
@Column(name = "LAST_MODIFIED_BY")
private String lastModifiedBy;
@LastModifiedDate
@Column(name = "LAST_MODIFIED_DATE")
@Temporal(TemporalType.TIMESTAMP)
private Date lastModifiedDate;
@DeletedBy
@Column(name = "DELETED_BY")
private String deletedBy;
@DeletedDate
@Column(name = "DELETED_DATE")
@Temporal(TemporalType.TIMESTAMP)
private Date deletedDate;
@TenantId
@Column(name = "TENANT")
private String tenant;
@OnDelete(DeletePolicy.CASCADE)
@Composition
@OneToMany(mappedBy = "cliente")
private List<Attivita> attivita;
public Boolean getDisattivato() {
return disattivato;
}
public void setDisattivato(Boolean disattivato) {
this.disattivato = disattivato;
}
public List<Attivita> getAttivita() {
return attivita;
}
public void setAttivita(List<Attivita> attivita) {
this.attivita = attivita;
}
public List<Fattura> getFatture() {
return fatture;
}
public void setFatture(List<Fattura> fatture) {
this.fatture = fatture;
}
public List<ListinoCliente> getListini() {
return listini;
}
public void setListini(List<ListinoCliente> listini) {
this.listini = listini;
}
public Boolean getSocieta() {
return societa;
}
public void setSocieta(Boolean societa) {
this.societa = societa;
}
public List<Appezzamento> getAppezzamenti() {
return appezzamenti;
}
public void setAppezzamenti(List<Appezzamento> appezzamenti) {
this.appezzamenti = appezzamenti;
}
public String getTenant() {
return tenant;
}
public void setTenant(String tenant) {
this.tenant = tenant;
}
public String getPec() {
return pec;
}
public void setPec(String pec) {
this.pec = pec;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getProvincia() {
return provincia;
}
public void setProvincia(String provincia) {
this.provincia = provincia;
}
public String getCap() {
return cap;
}
public void setCap(String cap) {
this.cap = cap;
}
public String getComune() {
return comune;
}
public void setComune(String comune) {
this.comune = comune;
}
public String getIndirizzo() {
return indirizzo;
}
public void setIndirizzo(String indirizzo) {
this.indirizzo = indirizzo;
}
public String getLocalita() {
return localita;
}
public void setLocalita(String localita) {
this.localita = localita;
}
public String getCellulare() {
return cellulare;
}
public void setCellulare(String cellulare) {
this.cellulare = cellulare;
}
public String getTelefono() {
return telefono;
}
public void setTelefono(String telefono) {
this.telefono = telefono;
}
public String getCodiceFiscale() {
return codiceFiscale;
}
public void setCodiceFiscale(String codiceFiscale) {
this.codiceFiscale = codiceFiscale;
}
public String getPiva() {
return piva;
}
public void setPiva(String piva) {
this.piva = piva;
}
public String getCognome() {
return cognome;
}
public void setCognome(String cognome) {
this.cognome = cognome;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getRagioneSociale() {
return ragioneSociale;
}
public void setRagioneSociale(String ragioneSociale) {
this.ragioneSociale = ragioneSociale;
}
public Date getDeletedDate() {
return deletedDate;
}
public void setDeletedDate(Date deletedDate) {
this.deletedDate = deletedDate;
}
public String getDeletedBy() {
return deletedBy;
}
public void setDeletedBy(String deletedBy) {
this.deletedBy = deletedBy;
}
public Date getLastModifiedDate() {
return lastModifiedDate;
}
public void setLastModifiedDate(Date lastModifiedDate) {
this.lastModifiedDate = lastModifiedDate;
}
public String getLastModifiedBy() {
return lastModifiedBy;
}
public void setLastModifiedBy(String lastModifiedBy) {
this.lastModifiedBy = lastModifiedBy;
}
public Date getCreatedDate() {
return createdDate;
}
public void setCreatedDate(Date createdDate) {
this.createdDate = createdDate;
}
public String getCreatedBy() {
return createdBy;
}
public void setCreatedBy(String createdBy) {
this.createdBy = createdBy;
}
public Integer getVersion() {
return version;
}
public void setVersion(Integer version) {
this.version = version;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
@DependsOnProperties({"nome", "cognome"})
public String getDisplayName() {
return String.format("%s %s ", (cognome != null ? cognome : ""),
(nome != null ? nome : "")).trim();
}
@InstanceName
@DependsOnProperties({"ragioneSociale", "nome", "cognome"})
public String getCliente() {
if(Objects.nonNull(this.ragioneSociale) && !this.ragioneSociale.isEmpty())
return this.ragioneSociale;
else
return this.nome + " " + this.cognome;
}
and the Entity Attività
@JmixEntity
@Table(name = "ATTIVITA", indexes = {
@Index(name = "IDX_ATTIVITA_COLLABORATORE", columnList = "COLLABORATORE_ID"),
@Index(name = "IDX_ATTIVITA_LAVORAZIONE", columnList = "LAVORAZIONE_ID"),
@Index(name = "IDX_ATTIVITA_MEZZO", columnList = "MEZZO_ID"),
@Index(name = "IDX_ATTIVITA_FATTURA", columnList = "FATTURA_ID"),
@Index(name = "IDX_ATTIVITA_CLIENTE", columnList = "CLIENTE_ID")
})
@Entity
public class Attivita {
@JmixGeneratedValue
@Column(name = "ID", nullable = false)
@Id
private Long id;
@JoinColumn(name = "CLIENTE_ID", nullable = false)
@NotNull
@ManyToOne(fetch = FetchType.LAZY, optional = false)
private Cliente cliente;
@TenantId
@Column(name = "TENANT")
private String tenant;
@Column(name = "ORE_COLLABORATORE")
private Double oreCollaboratore;
@Column(name = "NOTE")
@Lob
private String note;
@JoinColumn(name = "COLLABORATORE_ID", nullable = false)
@NotNull
@ManyToOne(fetch = FetchType.LAZY, optional = false)
private User collaboratore;
@Column(name = "QTA")
private Double qta;
@Column(name = "ORA_INIZIO")
@Temporal(TemporalType.TIME)
private Date oraInizio;
@Column(name = "ORA_FINE")
@Temporal(TemporalType.TIME)
private Date oraFine;
@Column(name = "DURATA")
private Double durata;
@Column(name = "VALORE")
private Double valore;
@Column(name = "UNITA_MISURA")
private String unitaMisura;
@JoinColumn(name = "LAVORAZIONE_ID", nullable = false)
@NotNull
@ManyToOne(fetch = FetchType.LAZY, optional = false)
private Lavorazione lavorazione;
@NotNull
@Column(name = "DATA_", nullable = false)
private LocalDate data;
@OnDelete(DeletePolicy.UNLINK)
@JoinTable(name = "ATTIVITA_APPEZZAMENTO_LINK",
joinColumns = @JoinColumn(name = "ATTIVITA_ID", referencedColumnName = "ID"),
inverseJoinColumns = @JoinColumn(name = "APPEZZAMENTO_ID", referencedColumnName = "ID"))
@ManyToMany(fetch = FetchType.EAGER)
private List<Appezzamento> appezzamenti;
public String getTenant() {
return tenant;
}
public void setTenant(String tenant) {
this.tenant = tenant;
}
@Column(name = "PREZZO")
private Double prezzo;
@Column(name = "VERIFICATO")
private Boolean verificato;
@Column(name = "DA_FATTURARE")
private Boolean daFatturare;
@Column(name = "FATTURATO")
private Boolean fatturato;
@JoinColumn(name = "MEZZO_ID")
@ManyToOne(fetch = FetchType.LAZY)
private Mezzo mezzo;
@JoinColumn(name = "FATTURA_ID")
@ManyToOne(fetch = FetchType.LAZY)
private Fattura fattura;
@Column(name = "VERSION", nullable = false)
@Version
private Integer version;
@CreatedBy
@Column(name = "CREATED_BY")
private String createdBy;
@CreatedDate
@Column(name = "CREATED_DATE")
@Temporal(TemporalType.TIMESTAMP)
private Date createdDate;
@LastModifiedBy
@Column(name = "LAST_MODIFIED_BY")
private String lastModifiedBy;
@LastModifiedDate
@Column(name = "LAST_MODIFIED_DATE")
@Temporal(TemporalType.TIMESTAMP)
private Date lastModifiedDate;
@DeletedBy
@Column(name = "DELETED_BY")
private String deletedBy;
@DeletedDate
@Column(name = "DELETED_DATE")
@Temporal(TemporalType.TIMESTAMP)
private Date deletedDate;
public void setAppezzamenti(List<Appezzamento> appezzamenti) {
this.appezzamenti = appezzamenti;
}
public List<Appezzamento> getAppezzamenti() {
return appezzamenti;
}
public Cliente getCliente() {
return cliente;
}
public void setCliente(Cliente cliente) {
this.cliente = cliente;
}
public Fattura getFattura() {
return fattura;
}
public void setFattura(Fattura fattura) {
this.fattura = fattura;
}
public Mezzo getMezzo() {
return mezzo;
}
public void setMezzo(Mezzo mezzo) {
this.mezzo = mezzo;
}
public Boolean getFatturato() {
return fatturato;
}
public void setFatturato(Boolean fatturato) {
this.fatturato = fatturato;
}
public Boolean getDaFatturare() {
return daFatturare;
}
public void setDaFatturare(Boolean daFatturare) {
this.daFatturare = daFatturare;
}
public Boolean getVerificato() {
return verificato;
}
public void setVerificato(Boolean verificato) {
this.verificato = verificato;
}
public Double getPrezzo() {
return prezzo;
}
public void setPrezzo(Double prezzo) {
this.prezzo = prezzo;
}
public LocalDate getData() {
return data;
}
public void setData(LocalDate data) {
this.data = data;
}
public Lavorazione getLavorazione() {
return lavorazione;
}
public void setLavorazione(Lavorazione lavorazione) {
this.lavorazione = lavorazione;
}
public UM getUnitaMisura() {
return unitaMisura == null ? null : UM.fromId(unitaMisura);
}
public void setUnitaMisura(UM unitaMisura) {
this.unitaMisura = unitaMisura == null ? null : unitaMisura.getId();
}
public Double getValore() {
return valore;
}
public void setValore(Double valore) {
this.valore = valore;
}
public Double getDurata() {
return durata;
}
public void setDurata(Double durata) {
this.durata = durata;
}
public Date getOraFine() {
return oraFine;
}
public void setOraFine(Date oraFine) {
this.oraFine = oraFine;
}
public Date getOraInizio() {
return oraInizio;
}
public void setOraInizio(Date oraInizio) {
this.oraInizio = oraInizio;
}
public Double getQta() {
return qta;
}
public void setQta(Double qta) {
this.qta = qta;
}
public User getCollaboratore() {
return collaboratore;
}
public void setCollaboratore(User collaboratore) {
this.collaboratore = collaboratore;
}
public String getNote() {
return note;
}
public void setNote(String note) {
this.note = note;
}
public Double getOreCollaboratore() {
return oreCollaboratore;
}
public void setOreCollaboratore(Double oreCollaboratore) {
this.oreCollaboratore = oreCollaboratore;
}
public Date getDeletedDate() {
return deletedDate;
}
public void setDeletedDate(Date deletedDate) {
this.deletedDate = deletedDate;
}
public String getDeletedBy() {
return deletedBy;
}
public void setDeletedBy(String deletedBy) {
this.deletedBy = deletedBy;
}
public Date getLastModifiedDate() {
return lastModifiedDate;
}
public void setLastModifiedDate(Date lastModifiedDate) {
this.lastModifiedDate = lastModifiedDate;
}
public String getLastModifiedBy() {
return lastModifiedBy;
}
public void setLastModifiedBy(String lastModifiedBy) {
this.lastModifiedBy = lastModifiedBy;
}
public Date getCreatedDate() {
return createdDate;
}
public void setCreatedDate(Date createdDate) {
this.createdDate = createdDate;
}
public String getCreatedBy() {
return createdBy;
}
public void setCreatedBy(String createdBy) {
this.createdBy = createdBy;
}
public Integer getVersion() {
return version;
}
public void setVersion(Integer version) {
this.version = version;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
}
java.lang.ClassCastException: class com.company.innoagri.entity.Attivita cannot be cast to class org.eclipse.persistence.descriptors.changetracking.ChangeTracker (com.company.innoagri.entity.Attivita and org.eclipse.persistence.descriptors.changetracking.ChangeTracker are in unnamed module of loader 'app')
at io.jmix.eclipselink.impl.EntityChangedEventManager.internalCollect(EntityChangedEventManager.java:141)
at io.jmix.eclipselink.impl.EntityChangedEventManager.collect(EntityChangedEventManager.java:121)
at io.jmix.eclipselink.impl.JpaDataStore.beforeSaveTransactionCommit(JpaDataStore.java:427)
at io.jmix.core.datastore.AbstractDataStore.save(AbstractDataStore.java:229)
at io.jmix.eclipselink.impl.JpaDataStore.save(JpaDataStore.java:227)
at io.jmix.core.impl.UnconstrainedDataManagerImpl.saveContextToStore(UnconstrainedDataManagerImpl.java:257)
at io.jmix.core.impl.UnconstrainedDataManagerImpl.save(UnconstrainedDataManagerImpl.java:216)
at io.jmix.ui.model.impl.DataContextImpl.commitToDataManager(DataContextImpl.java:712)
at io.jmix.ui.model.impl.DataContextImpl.performCommit(DataContextImpl.java:697)
at io.jmix.ui.model.impl.DataContextImpl.commit(DataContextImpl.java:658)
at io.jmix.ui.screen.StandardEditor.lambda$commitChanges$9(StandardEditor.java:427)
at io.jmix.ui.screen.StandardEditor.commitChanges(StandardEditor.java:456)
at io.jmix.ui.screen.StandardEditor.closeWithCommit(StandardEditor.java:626)
at io.jmix.ui.screen.StandardEditor.commitAndClose(StandardEditor.java:580)
at io.jmix.core.common.event.EventHub.publish(EventHub.java:170)
at io.jmix.ui.action.BaseAction.actionPerform(BaseAction.java:220)
at io.jmix.ui.component.impl.ButtonImpl.buttonClicked(ButtonImpl.java:75)
at io.jmix.ui.widget.JmixButton.fireClick(JmixButton.java:77)
at com.vaadin.ui.Button$1.click(Button.java:57)
at jdk.internal.reflect.GeneratedMethodAccessor132.invoke(Unknown Source)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at com.vaadin.server.ServerRpcManager.applyInvocation(ServerRpcManager.java:153)
at com.vaadin.server.ServerRpcManager.applyInvocation(ServerRpcManager.java:115)
at com.vaadin.server.communication.ServerRpcHandler.handleInvocation(ServerRpcHandler.java:442)
at com.vaadin.server.communication.ServerRpcHandler.handleInvocations(ServerRpcHandler.java:407)
at com.vaadin.server.communication.ServerRpcHandler.handleRpc(ServerRpcHandler.java:275)
at com.vaadin.server.communication.UidlRequestHandler.synchronizedHandleRequest(UidlRequestHandler.java:83)
at com.vaadin.server.SynchronizedRequestHandler.handleRequest(SynchronizedRequestHandler.java:40)
at com.vaadin.server.VaadinService.handleRequest(VaadinService.java:1636)
at com.vaadin.server.VaadinServlet.service(VaadinServlet.java:465)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:750)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:209)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153)
at io.jmix.core.impl.logging.LogMdcFilter.doFilterInternal(LogMdcFilter.java:28)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:337)
at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:115)
at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:81)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346)
at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:122)
at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:116)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346)
at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:126)
at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:81)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346)
at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:109)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346)
at org.springframework.security.web.authentication.rememberme.RememberMeAuthenticationFilter.doFilter(RememberMeAuthenticationFilter.java:106)
at org.springframework.security.web.authentication.rememberme.RememberMeAuthenticationFilter.doFilter(RememberMeAuthenticationFilter.java:97)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346)
at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:149)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346)
at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346)
at org.springframework.security.web.session.ConcurrentSessionFilter.doFilter(ConcurrentSessionFilter.java:147)
at org.springframework.security.web.session.ConcurrentSessionFilter.doFilter(ConcurrentSessionFilter.java:125)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346)
at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:103)
at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:89)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346)
at org.springframework.security.web.header.HeaderWriterFilter.doHeadersAfter(HeaderWriterFilter.java:90)
at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:75)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346)
at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:112)
at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:82)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346)
at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:55)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346)
at org.springframework.security.web.session.DisableEncodeUrlFilter.doFilterInternal(DisableEncodeUrlFilter.java:42)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346)
at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:221)
at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:186)
at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:354)
at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:267)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153)
at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153)
at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:167)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:492)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:130)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:389)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:926)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1791)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)
at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.base/java.lang.Thread.run(Thread.java:834)