steprm
steprm

Reputation: 11

error of entity does not exist when saving on db by Hibernate

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

Answers (1)

Salah Atwa
Salah Atwa

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

Related Questions