Campo não vai no insert JPA

7 respostas
R

Pessoal seguinte tenho aqui no meu projeto
objetos dentro de objetos, e quando vou
persistir persisto apenas o objeto maior
isso era para funcionar porem na hora de
inserir um dos objetos menores tem um campo
que nao vai no insert:

10/09/2008 14:52:02 oracle.toplink.essentials.session.file:/C:/Java/glassfish/domains/domain1/autodeploy/CompraObra.ear/CompraObrasEJB.jar/-compra_obras_pu

WARNING:

Local Exception Stack:

Exception [TOPLINK-4002] (Oracle TopLink Essentials - 2.0.1 (Build b09d-fcs (12/06/2007))): oracle.toplink.essentials.exceptions.DatabaseException

Internal Exception: java.sql.SQLException: Field qtdeSolicitada doesnt have a default value

Error Code: 1364

Call: INSERT INTO compra_obras.ObrasSugestao (idObra, idAutor, idSugestaoCompraObra) VALUES (?, ?, ?)

bind => [2, 1, 1]

Query: DataModifyQuery()

at oracle.toplink.essentials.exceptions.DatabaseException.sqlException(DatabaseException.java:311)

at oracle.toplink.essentials.internal.databaseaccess.DatabaseAccessor.executeDirectNoSelect(DatabaseAccessor.java:654)

at oracle.toplink.essentials.internal.databaseaccess.DatabaseAccessor.executeNoSelect(DatabaseAccessor.java:703)

at oracle.toplink.essentials.internal.databaseaccess.DatabaseAccessor.basicExecuteCall(DatabaseAccessor.java:492)

at oracle.toplink.essentials.internal.databaseaccess.DatabaseAccessor.executeCall(DatabaseAccessor.java:452)

at oracle.toplink.essentials.internal.sessions.AbstractSession.executeCall(AbstractSession.java:690)

at oracle.toplink.essentials.internal.queryframework.DatasourceCallQueryMechanism.executeCall(DatasourceCallQueryMechanism.java:228)

at oracle.toplink.essentials.internal.queryframework.DatasourceCallQueryMechanism.executeCall(DatasourceCallQueryMechanism.java:214)

at oracle.toplink.essentials.internal.queryframework.DatasourceCallQueryMechanism.executeNoSelectCall(DatasourceCallQueryMechanism.java:257)

at oracle.toplink.essentials.internal.queryframework.DatasourceCallQueryMechanism.executeNoSelect(DatasourceCallQueryMechanism.java:237)

at oracle.toplink.essentials.internal.queryframework.StatementQueryMechanism.executeNoSelect(StatementQueryMechanism.java:144)

at oracle.toplink.essentials.queryframework.DataModifyQuery.executeDatabaseQuery(DataModifyQuery.java:86)

at oracle.toplink.essentials.queryframework.DatabaseQuery.execute(DatabaseQuery.java:628)

at oracle.toplink.essentials.queryframework.DatabaseQuery.executeInUnitOfWork(DatabaseQuery.java:555)

at oracle.toplink.essentials.internal.sessions.UnitOfWorkImpl.internalExecuteQuery(UnitOfWorkImpl.java:2233)

at oracle.toplink.essentials.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:952)

at oracle.toplink.essentials.mappings.ManyToManyMapping.insertAddedObjectEntry(ManyToManyMapping.java:718)

at oracle.toplink.essentials.mappings.ManyToManyMapping.performDataModificationEvent(ManyToManyMapping.java:916)

at oracle.toplink.essentials.internal.sessions.CommitManager.commitAllObjectsWithChangeSet(CommitManager.java:214)

at oracle.toplink.essentials.internal.sessions.AbstractSession.writeAllObjectsWithChangeSet(AbstractSession.java:2657)

at oracle.toplink.essentials.internal.sessions.UnitOfWorkImpl.commitToDatabase(UnitOfWorkImpl.java:1044)

at oracle.toplink.essentials.internal.ejb.cmp3.base.RepeatableWriteUnitOfWork.commitToDatabase(RepeatableWriteUnitOfWork.java:403)

at oracle.toplink.essentials.internal.sessions.UnitOfWorkImpl.commitToDatabaseWithChangeSet(UnitOfWorkImpl.java:1126)

at oracle.toplink.essentials.internal.sessions.UnitOfWorkImpl.issueSQLbeforeCompletion(UnitOfWorkImpl.java:2443)

at oracle.toplink.essentials.internal.ejb.cmp3.base.RepeatableWriteUnitOfWork.issueSQLbeforeCompletion(RepeatableWriteUnitOfWork.java:202)

at oracle.toplink.essentials.transaction.AbstractSynchronizationListener.beforeCompletion(AbstractSynchronizationListener.java:131)

at oracle.toplink.essentials.transaction.JTASynchronizationListener.beforeCompletion(JTASynchronizationListener.java:91)

at com.sun.enterprise.distributedtx.J2EETransaction.commit(J2EETransaction.java:419)

at com.sun.enterprise.distributedtx.J2EETransactionManagerOpt.commit(J2EETransactionManagerOpt.java:371)

at com.sun.ejb.containers.BaseContainer.completeNewTx(BaseContainer.java:3792)

at com.sun.ejb.containers.BaseContainer.postInvokeTx(BaseContainer.java:3571)

at com.sun.ejb.containers.BaseContainer.postInvoke(BaseContainer.java:1354)

at com.sun.ejb.containers.BaseContainer.postInvoke(BaseContainer.java:1316)

at com.sun.ejb.containers.EJBLocalObjectInvocationHandler.invoke(EJBLocalObjectInvocationHandler.java:205)

at com.sun.ejb.containers.EJBLocalObjectInvocationHandlerDelegate.invoke(EJBLocalObjectInvocationHandlerDelegate.java:127)

at $Proxy160.updateSugestaoCompraObra(Unknown Source)

at br.unifor.cct.cienciacomputacao.compraobras.controller.historico.DetalheSugestaoCompraObras.cadastrar(DetalheSugestaoCompraObras.java:251)

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 com.sun.el.parser.AstValue.invoke(AstValue.java:187)

at com.sun.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:297)

at com.sun.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:68)

at com.sun.facelets.el.LegacyMethodBinding.invoke(LegacyMethodBinding.java:69)

at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:91)

at javax.faces.component.UICommand.broadcast(UICommand.java:383)

at org.ajax4jsf.component.AjaxActionComponent.broadcast(AjaxActionComponent.java:55)

at org.ajax4jsf.component.AjaxViewRoot.processEvents(AjaxViewRoot.java:317)

at org.ajax4jsf.component.AjaxViewRoot.broadcastEvents(AjaxViewRoot.java:292)

at org.ajax4jsf.component.AjaxViewRoot.processPhase(AjaxViewRoot.java:249)

at org.ajax4jsf.component.AjaxViewRoot.processApplication(AjaxViewRoot.java:462)

at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:97)

at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251)

at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:117)

at javax.faces.webapp.FacesServlet.service(FacesServlet.java:244)

at org.apache.catalina.core.ApplicationFilterChain.servletService(ApplicationFilterChain.java:411)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:317)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:198)

at org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:147)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:230)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:198)

at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:154)

at org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:260)

at org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:366)

at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:493)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:230)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:198)

at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:288)

at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:271)

at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:202)

at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:632)

at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:577)

at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:94)

at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:206)

at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:632)

at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:577)

at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:571)

at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:1080)

at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:150)

at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:632)

at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:577)

at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:571)

at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:1080)

at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:270)

at com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.invokeAdapter(DefaultProcessorTask.java:637)

at com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.doProcess(DefaultProcessorTask.java:568)

at com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.process(DefaultProcessorTask.java:813)

at com.sun.enterprise.web.connector.grizzly.DefaultReadTask.executeProcessorTask(DefaultReadTask.java:339)

at com.sun.enterprise.web.connector.grizzly.DefaultReadTask.doTask(DefaultReadTask.java:261)

at com.sun.enterprise.web.connector.grizzly.DefaultReadTask.doTask(DefaultReadTask.java:212)

at com.sun.enterprise.web.connector.grizzly.TaskBase.run(TaskBase.java:265)

at com.sun.enterprise.web.connector.grizzly.ssl.SSLWorkerThread.run(SSLWorkerThread.java:106)

Caused by: java.sql.SQLException: Field qtdeSolicitada doesnt have a default value

at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1055)

at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956)

at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3491)

at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3423)

at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1936)

at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2060)

at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2542)

at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1734)

at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2019)

at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1937)

at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1922)

at oracle.toplink.essentials.internal.databaseaccess.DatabaseAccessor.executeDirectNoSelect(DatabaseAccessor.java:647)

 91 more

observem q o campo qtdeSolicitada não vai no insert e é nt null na tabela
ja estou quebrando a cabeça com esse erro tem duas semanas, ja troquei
versão do mysql, do driver da implementacao do JPA e nada, se alguem
poder me dar uma luz, se ja tiver passado por isso ou saiba o q pode ser
desde já agradeceria.

7 Respostas

fiaux

Mostre o código.

sigma

Posta a classe mapeada.

R
package br.unifor.cct.cienciacomputacao.compraobras.suggestion.entity;

import javax.persistence.*;

/**
 * Obrassugestao generated by MyEclipse Persistence Tools
 */
@Entity
@Table(name = "obrassugestao", catalog = "compra_obras", uniqueConstraints = {})
public class ObrasSugestao implements java.io.Serializable {

	// Fields
	private static final long serialVersionUID = -6273597740607380951L;
	private ObrasSugestaoPK id;
	private Integer qtdeSolicitada;
	private ObraAutor obraAutor;
	private SugestaoCompraObra sugestaoCompraObra;

	// Constructors

	/** default constructor */
	public ObrasSugestao() {
	}

	/** full constructor */
	public ObrasSugestao(ObrasSugestaoPK id) {
		this.id = id;
	}

	// Property accessors
	@EmbeddedId
	@AttributeOverrides( {
			@AttributeOverride(name = "idAutor", column = @Column(name = "idAutor", unique = false, nullable = false, insertable = true, updatable = true)),
			@AttributeOverride(name = "idObra", column = @Column(name = "idObra", unique = false, nullable = false, insertable = true, updatable = true)),
			@AttributeOverride(name = "idSugestaoCompraObra", column = @Column(name = "idSugestaoCompraObra", unique = false, nullable = false, insertable = true, updatable = true)) })
	public ObrasSugestaoPK getId() {
		return this.id;
	}

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

//	@Column(name = "qtdeSolicitada", unique = false, insertable = true, updatable = true, nullable = true)
	@Column
	public Integer getQtdeSolicitada() {
		return qtdeSolicitada;
	}

	public void setQtdeSolicitada(Integer qtdeSolicitada) {
		this.qtdeSolicitada = qtdeSolicitada;
	}

//	@OneToOne(cascade={CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REFRESH},fetch=FetchType.EAGER)
	@ManyToOne(cascade={CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REFRESH},fetch=FetchType.EAGER)
    @JoinColumns( { 
        @JoinColumn(name="idObra", referencedColumnName="idObra",unique=false, nullable=false, insertable=false, updatable=false), 
        @JoinColumn(name="idAutor", referencedColumnName="idAutor",unique=false, nullable=false, insertable=false, updatable=false) } )	
	public ObraAutor getObraAutor() {
		return this.obraAutor;
	}

	public void setObraAutor(ObraAutor obraAutor) {
		this.obraAutor = obraAutor;
	}

	@ManyToOne(cascade=CascadeType.ALL,fetch=FetchType.EAGER)
	@JoinColumn(name="idSugestaoCompraObra", unique=false, nullable=false, insertable=false, updatable=false)
	public SugestaoCompraObra getSugestaoCompraObra() {
		return sugestaoCompraObra;
	}

	public void setSugestaoCompraObra(SugestaoCompraObra sugestaoCompraObra) {
		this.sugestaoCompraObra = sugestaoCompraObra;
	}
}
sigma

O nome da coluna no banco e qtdeSolicitada?

R

é sim!

sigma

Vc preenche o campo qtdeSolicitada ou envia nulo para o banco?

Se enviar nulo para o banco e la nao aceitar nulo ele deve estar procurando o valor default do campo, sera?

R

não, ele vai setado :frowning:

Criado 10 de setembro de 2008
Ultima resposta 10 de set. de 2008
Respostas 7
Participantes 3