尝试保存对象时,Spring + Hibernate + PostgreSQL会抛出SQLGrammarExeception

时间:2016-03-29 16:29:38

标签: java spring hibernate postgresql

尝试插入BBDD对象时遇到问题。我在这里复制我的代码,对不起我的英文。

构建对象时的代码:

generaAvisoCups(new TControlDispatchCupsDay(gasDay, "DIARIA", tMaiCups, qd, 
                    telem, false, tTypeSolution, new Date(), new Date()));



@Entity
@Table(name = "t_control_dispatch_cups_day")
public class TControlDispatchCupsDay implements Serializable {

/**
 * 
 */
private static final long serialVersionUID = -2612331133209150754L;

private int id;
private TMaiCups TMaiCups;
private TTypeSolution TTypeSolution;
private Date gasDay;
private BigDecimal limit;
private BigDecimal energy;
private boolean checked;
private Date creationDate;
private Date modificationDate;
private String chain;

public TControlDispatchCupsDay() {
}

public TControlDispatchCupsDay(Date gasDay, String chain,
        TMaiCups TMaiCups, BigDecimal limit, BigDecimal energy, boolean checked,
        TTypeSolution TTypeSolution, Date creationDate, Date modificationDate) {
    this.gasDay = gasDay;
    this.TMaiCups = TMaiCups;
    this.TTypeSolution = TTypeSolution;
    this.limit = limit;
    this.energy = energy;
    this.checked = checked;
    this.creationDate = creationDate;
    this.modificationDate = modificationDate;
    this.chain = chain;
}

@Id
@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="t_control_dispatch_cups_day_seq")
@SequenceGenerator(name="t_control_dispatch_cups_day_seq", sequenceName="t_control_dispatch_cups_day_seq", allocationSize=1)
@Column(name = "id", unique = true, nullable = false)
public int getId() {
    return this.id;
}

public void setId(int id) {
    this.id = id;
}

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "cups",referencedColumnName = "cups")
public TMaiCups getTMaiCups() {
    return this.TMaiCups;
}

public void setTMaiCups(TMaiCups TMaiCups) {
    this.TMaiCups = TMaiCups;
}

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "solution", nullable = false, referencedColumnName = "type")
public TTypeSolution getTTypeSolution() {
    return this.TTypeSolution;
}

public void setTTypeSolution(TTypeSolution TTypeSolution) {
    this.TTypeSolution = TTypeSolution;
}

@Temporal(TemporalType.DATE)
@Column(name = "gas_day", nullable = false, length = 13)
public Date getGasDay() {
    return this.gasDay;
}

public void setGasDay(Date gasDay) {
    this.gasDay = gasDay;
}

@Column(name = "limite")
public BigDecimal getLimit() {
    return this.limit;
}

public void setLimit(BigDecimal limit) {
    this.limit = limit;
}

@Column(name = "energy")
public BigDecimal getEnergy() {
    return this.energy;
}

public void setEnergy(BigDecimal energy) {
    this.energy = energy;
}

@Column(name = "checked")
@Type(type="true_false")
public boolean getChecked() {
    return this.checked;
}

public void setChecked(boolean checked) {
    this.checked = checked;
}

@Column(name = "creation_date", nullable = false, length = 29)
public Date getCreationDate() {
    return this.creationDate;
}

public void setCreationDate(Date creationDate) {
    this.creationDate = creationDate;
}

@Temporal(TemporalType.TIMESTAMP)
@Column(name = "modification_date", nullable = false, length = 29)
public Date getModificationDate() {
    return this.modificationDate;
}

public void setModificationDate(Date modificationDate) {
    this.modificationDate = modificationDate;
}

@Column(name = "cadena", nullable = false, length = 10)
public String getChain() {
    return this.chain;
}

public void setChain(String chain) {
    this.chain = chain;
}

}

@SuppressWarnings("rawtypes")
@Transactional
public class BaseDaoImpl extends HibernateDaoSupport implements Serializable {

...............
.............
............

    protected void save(Object transientInstance) throws Exception {
        try {
            getHibernateTemplate().getSessionFactory().getCurrentSession().save(transientInstance);
        } catch (Exception e) {
            logger.error(e.getMessage(), e);
            throw new Exception("Error al guardar el elemento.", e);
        }
    }


............
}

的PostgreSQL

CREATE TABLE t_control_dispatch_cups_day
(
  gas_day date NOT NULL,
  energy numeric,
  checked boolean,
  creation_date timestamp without time zone NOT NULL DEFAULT now(),
  modification_date timestamp without time zone NOT NULL DEFAULT now(),
  cadena character varying(10) NOT NULL,
  solution character varying(1) NOT NULL,
  cups character varying(20) NOT NULL,
  id integer NOT NULL DEFAULT nextval('t_control_dispatch_cups_day_seq'::regclass),
  limite numeric,
  CONSTRAINT "table_PKs" PRIMARY KEY (id),
  CONSTRAINT "FK_cups" FOREIGN KEY (cups)
      REFERENCES t_mai_cups (cups) MATCH SIMPLE
      ON UPDATE NO ACTION ON DELETE NO ACTION,
  CONSTRAINT "FK_solution" FOREIGN KEY (solution)
      REFERENCES t_type_solution (type) MATCH SIMPLE
      ON UPDATE NO ACTION ON DELETE NO ACTION
)
WITH (
  OIDS=FALSE
);
org.springframework.dao.InvalidDataAccessResourceUsageException: Could not execute JDBC batch update; SQL [insert into t_control_dispatch_cups_day (cups, solution, cadena, checked, creation_date, energy, gas_day, limite, modification_date, id) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)]; nested exception is org.hibernate.exception.SQLGrammarException: Could not execute JDBC batch update
        at org.springframework.orm.hibernate3.SessionFactoryUtils.convertHibernateAccessException(SessionFactoryUtils.java:629)
        at org.springframework.orm.hibernate3.HibernateTransactionManager.convertHibernateAccessException(HibernateTransactionManager.java:793)
        at org.springframework.orm.hibernate3.HibernateTransactionManager.doCommit(HibernateTransactionManager.java:664)
        at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:754)
        at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:723)
        at org.springframework.transaction.interceptor.TransactionAspectSupport.commitTransactionAfterReturning(TransactionAspectSupport.java:393)
        at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:120)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
        at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)
        at com.sun.proxy.$Proxy124.addNotificationCupsImpl(Unknown Source)
        at com.aia.processor.daily.dispatcher.DailyDispatcherProcess.generaAvisoCups(DailyDispatcherProcess.java:1355)
        at com.aia.processor.daily.dispatcher.DailyDispatcherProcess.checkQdDobleForCups(DailyDispatcherProcess.java:1606)
        at com.aia.processor.daily.dispatcher.DailyDispatcherProcess.saveDispNetDayCups(DailyDispatcherProcess.java:1496)
        at com.aia.processor.daily.dispatcher.DailyDispatcherProcess.saveData(DailyDispatcherProcess.java:1340)
        at com.aia.processor.daily.dispatcher.DailyDispatcherProcess.doDispatch(DailyDispatcherProcess.java:466)
        at com.aia.processor.daily.dispatcher.DailyDispatcherProcess.execute(DailyDispatcherProcess.java:277)
        at com.aia.mrg.web.ctl.daily.DailyDispatchCtl.recalcularReparto(DailyDispatchCtl.java:218)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.apache.el.parser.AstValue.invoke(AstValue.java:278)
        at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:274)
        at javax.faces.event.MethodExpressionActionListener.processAction(MethodExpressionActionListener.java:153)
        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:305)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
        at org.primefaces.webapp.filter.FileUploadFilter.doFilter(FileUploadFilter.java:79)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330)
        at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:118)
        at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:84)
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
        at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:113)
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
        at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:103)
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
        at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:113)
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
        at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:54)
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
        at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:45)
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
        at org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilter(BasicAuthenticationFilter.java:150)
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
        at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:183)
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
        at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:105)
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
        at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:87)
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
        at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:192)
        at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:160)
        at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:237)
        at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
        at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
        at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:929)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
        at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1002)
        at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:585)
        at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
        at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
        at java.lang.Thread.run(Thread.java:662)
    Caused by: org.hibernate.exception.SQLGrammarException: Could not execute JDBC batch update
        at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:92)
        at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66)
        at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:275)
        at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:268)
        at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:184)
        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:1216)
        at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:383)
        at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:133)
        at org.springframework.orm.hibernate3.HibernateTransactionManager.doCommit(HibernateTransactionManager.java:656)
        ... 77 more
    Caused by: java.sql.BatchUpdateException: Batch entry 0 insert into t_control_dispatch_cups_day (cups, solution, cadena, checked, creation_date, energy, gas_day, limite, modification_date, id) values ('ES0217901000013299MP', 'P', 'DIARIA', 'F', '2016-03-30 08:05:05.983000 +02:00:00', '22293', '2014-03-12 +01:00:00', '55900.000000000000000', '2016-03-30 08:05:05.984000 +02:00:00', '34') was aborted.  Call getNextException to see the cause.
        at org.postgresql.jdbc2.AbstractJdbc2Statement$BatchResultHandler.handleError(AbstractJdbc2Statement.java:2621)
        at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1837)
        at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:407)
        at org.postgresql.jdbc2.AbstractJdbc2Statement.executeBatch(AbstractJdbc2Statement.java:2754)
        at org.apache.commons.dbcp.DelegatingPreparedStatement.executeBatch(DelegatingPreparedStatement.java:231)
        at org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:70)
        at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:268)
        ... 85 more

0 个答案:

没有答案