Reputation: 11
I'm again to ask your kindle help to solve a problem with Hibernate, PostgreSQL, SpringBoot. I'm trying to perform an update on a record but I get the following error:
2021-01-21 11:55:57,549 37032 [scheduling-1] INFO o.h.e.i.DefaultLoadEventListener - HHH000327: Error performing load command : org.hibernate.exception.SQLGrammarException: could not extract ResultSet org.hibernate.exception.SQLGrammarException: could not extract ResultSet at org.hibernate.exception.internal.SQLStateConversionDelegate.convert(SQLStateConversionDelegate.java:103) at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:42) at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:113) at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:99) at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:67) at org.hibernate.loader.Loader.getResultSet(Loader.java:2292) at org.hibernate.loader.Loader.executeQueryStatement(Loader.java:2050) at org.hibernate.loader.Loader.executeQueryStatement(Loader.java:2012) at org.hibernate.loader.Loader.doQuery(Loader.java:953) at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:354) at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:324) at org.hibernate.loader.Loader.loadEntity(Loader.java:2406) at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:64) at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:54) at org.hibernate.persister.entity.AbstractEntityPersister.load(AbstractEntityPersister.java:4350) at org.hibernate.event.internal.DefaultLoadEventListener.loadFromDatasource(DefaultLoadEventListener.java:569) at org.hibernate.event.internal.DefaultLoadEventListener.doLoad(DefaultLoadEventListener.java:537) at org.hibernate.event.internal.DefaultLoadEventListener.load(DefaultLoadEventListener.java:208) at org.hibernate.event.internal.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:332) at org.hibernate.event.internal.DefaultLoadEventListener.doOnLoad(DefaultLoadEventListener.java:108) at org.hibernate.event.internal.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:74) at org.hibernate.event.service.internal.EventListenerGroupImpl.fireEventOnEachListener(EventListenerGroupImpl.java:118) at org.hibernate.internal.SessionImpl.fireLoadNoChecks(SessionImpl.java:1168) at org.hibernate.internal.SessionImpl.fireLoad(SessionImpl.java:1157) at org.hibernate.internal.SessionImpl.access$2000(SessionImpl.java:197) at org.hibernate.internal.SessionImpl$IdentifierLoadAccessImpl.doLoad(SessionImpl.java:2795) at org.hibernate.internal.SessionImpl$IdentifierLoadAccessImpl.lambda$load$1(SessionImpl.java:2776) at org.hibernate.internal.SessionImpl$IdentifierLoadAccessImpl.perform(SessionImpl.java:2732) at org.hibernate.internal.SessionImpl$IdentifierLoadAccessImpl.load(SessionImpl.java:2776) at org.hibernate.internal.SessionImpl.get(SessionImpl.java:970) at org.hibernate.event.internal.DefaultMergeEventListener.entityIsDetached(DefaultMergeEventListener.java:306) at org.hibernate.event.internal.DefaultMergeEventListener.onMerge(DefaultMergeEventListener.java:172) at org.hibernate.event.internal.DefaultMergeEventListener.onMerge(DefaultMergeEventListener.java:70) at org.hibernate.event.service.internal.EventListenerGroupImpl.fireEventOnEachListener(EventListenerGroupImpl.java:108) at org.hibernate.internal.SessionImpl.fireMerge(SessionImpl.java:775) at org.hibernate.internal.SessionImpl.merge(SessionImpl.java:762) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.springframework.orm.jpa.SharedEntityManagerCreator$SharedEntityManagerInvocationHandler.invoke(SharedEntityManagerCreator.java:314) at com.sun.proxy.$Proxy66.merge(Unknown Source) at org.springframework.data.jpa.repository.support.SimpleJpaRepository.save(SimpleJpaRepository.java:557) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.springframework.data.repository.core.support.RepositoryComposition$RepositoryFragments.invoke(RepositoryComposition.java:371) at org.springframework.data.repository.core.support.RepositoryComposition.invoke(RepositoryComposition.java:204) at org.springframework.data.repository.core.support.RepositoryFactorySupport$ImplementationMethodExecutionInterceptor.invoke(RepositoryFactorySupport.java:657) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.doInvoke(RepositoryFactorySupport.java:621) at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.invoke(RepositoryFactorySupport.java:605) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) at org.springframework.data.projection.DefaultMethodInvokingMethodInterceptor.invoke(DefaultMethodInvokingMethodInterceptor.java:80) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:366) at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:99) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:139) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) at org.springframework.data.jpa.repository.support.CrudMethodMetadataPostProcessor$CrudMethodMetadataPopulatingMethodInterceptor.invoke(CrudMethodMetadataPostProcessor.java:178) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:93) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:212) at com.sun.proxy.$Proxy90.save(Unknown Source) at com.mycompany.svecchiamento.services.TEntitaService.updateEntita(TEntitaService.java:19) at com.mycompany.svecchiamento.MainEngine.updateEntita(MainEngine.java:140) at com.mycompany.svecchiamento.MainEngine.svecchia(MainEngine.java:49) at com.mycompany.ScheduledTasks.svecchiaUtenti(ScheduledTasks.java:123) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.springframework.scheduling.support.ScheduledMethodRunnable.run(ScheduledMethodRunnable.java:84) at org.springframework.scheduling.support.DelegatingErrorHandlingRunnable.run(DelegatingErrorHandlingRunnable.java:54) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) Caused by: org.postgresql.util.PSQLException: ERROR: relation "tentita" does not exist Position: 243
Weird thing is that a couple of lines above the update, I performed a findById on the same relation and it works fine. Then I modified some fields and when try to save I got the error. This is the Entity class:
package com.mycompany.svecchiamento.entities.mappingdb;
import java.util.Date;
import javax.persistence.Entity;
import javax.persistence.Id;
@Entity
public class TEntita {
@Id
private Long idEntita;
private Long idAnagrafica;
private String flCancEnt;
private int idUsrVar;
private Date dtVar;
private int prVar;
public Long getIdEntita() {
return idEntita;
}
public void setIdEntita(Long idEntita) {
this.idEntita = idEntita;
}
public Long getIdAnagrafica() {
return idAnagrafica;
}
public void setIdAnagrafica(Long idAnagrafica) {
this.idAnagrafica = idAnagrafica;
}
public String getFlCancEnt() {
return flCancEnt;
}
public void setFlCancEnt(String flCancEnt) {
this.flCancEnt = flCancEnt;
}
public int getIdUsrVar() {
return idUsrVar;
}
public void setIdUsrVar(int idUsrVar) {
this.idUsrVar = idUsrVar;
}
public Date getDtVar() {
return dtVar;
}
public void setDtVar(Date dtVar) {
this.dtVar = dtVar;
}
public int getPrVar() {
return prVar;
}
public void setPrVar(int prVar) {
this.prVar = prVar;
}
}
this is the repository class:
package com.mycompany.svecchiamento.repositories;
import java.util.List;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import com.mycompany.svecchiamento.entities.mappingdb.TEntita;
public interface TEntitaRepository extends JpaRepository<TEntita, Long> {
@Query(
value = "SELECT * FROM T_ENTITA WHERE ID_ENTITA = ?1 ",
nativeQuery = true)
List<TEntita> getTentitaById(Long idEntitaUtente);
}
this the service:
package com.mycompany.svecchiamento.services;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.mycompany.svecchiamento.entities.mappingdb.TEntita;
import com.mycompany.svecchiamento.repositories.TEntitaRepository;
@Service
public class TEntitaService {
@Autowired TEntitaRepository repository;
public TEntita updateEntita(TEntita entity) throws Exception
{
entity = repository.save(entity);
return entity;
}
public List<TEntita> getTEntitaById(Long id) {
return repository.getTentitaById(id);
}
}
the hibernate config contains
<mapping resource="TEntita.hbm.xml"/>
and this is the TEntita.hbm.xml:
<?xml version="1.0"?>
<hibernate-mapping>
<class name="com.mycompany.svecchiamento.entities.mappingdb.TEntita"
table="T_ENTITA">
<id name="idEntita" column="id_entita">
</id>
<property name="idAnagrafica" column="id_anagrafica" />
<property name="flCancEnt" column="fl_canc_ent" />
<property name="idUsrVar" column="id_usr_var" />
<property name="dtVar" column="dt_var" />
<property name="prVar" column="pr_var" />
</class>
</hibernate-mapping>
Any suggestion? thank you so much, I really appreciate regards Stefano
Upvotes: 0
Views: 1256
Reputation: 1728
why you are using configuration xml + JPA annotations , you must use one of them
Just use JPA Annotation there's no need to use xml configurations, and try add following annotation under @Entity annotation
@Table(name="T_ENTITA")
Upvotes: 0