Foros del Web » Programación para mayores de 30 ;) » Java »

[SOLUCIONADO] Hibernate - Consulta sobre

Estas en el tema de Hibernate - Consulta sobre en el foro de Java en Foros del Web. Hola gente de foros del web, Quisiera saber si alguien me podria dar una mano con la siguiente excepcion que estoy teniendo ya que soy ...
  #1 (permalink)  
Antiguo 07/11/2013, 11:58
Avatar de lozanoguido  
Fecha de Ingreso: junio-2011
Mensajes: 33
Antigüedad: 12 años, 10 meses
Puntos: 0
Pregunta Hibernate - Consulta sobre

Hola gente de foros del web,

Quisiera saber si alguien me podria dar una mano con la siguiente excepcion que estoy teniendo ya que soy nuevo en el mundo de Hibernate y he buscado por todas partes alguna solución a mi problema y no he podido dar con la solucion:

StackTrace:

exception

org.springframework.web.util.NestedServletExceptio n: Request processing failed; nested exception is org.springframework.orm.hibernate4.HibernateSystem Exception: IllegalArgumentException occurred calling getter of local.model.Pedido.codigo; nested exception is org.hibernate.PropertyAccessException: IllegalArgumentException occurred calling getter of local.model.Pedido.codigo
org.springframework.web.servlet.FrameworkServlet.p rocessRequest(FrameworkServlet.java:894)
org.springframework.web.servlet.FrameworkServlet.d oGet(FrameworkServlet.java:778)
javax.servlet.http.HttpServlet.service(HttpServlet .java:617)
javax.servlet.http.HttpServlet.service(HttpServlet .java:723)
root cause

org.springframework.orm.hibernate4.HibernateSystem Exception: IllegalArgumentException occurred calling getter of local.model.Pedido.codigo; nested exception is org.hibernate.PropertyAccessException: IllegalArgumentException occurred calling getter of local.model.Pedido.codigo
org.springframework.orm.hibernate4.SessionFactoryU tils.convertHibernateAccessException(SessionFactor yUtils.java:206)
org.springframework.orm.hibernate4.HibernateTransa ctionManager.convertHibernateAccessException(Hiber nateTransactionManager.java:606)
org.springframework.orm.hibernate4.HibernateTransa ctionManager.doCommit(HibernateTransactionManager. java:488)
org.springframework.transaction.support.AbstractPl atformTransactionManager.processCommit(AbstractPla tformTransactionManager.java:754)
org.springframework.transaction.support.AbstractPl atformTransactionManager.commit(AbstractPlatformTr ansactionManager.java:723)
org.springframework.transaction.interceptor.Transa ctionAspectSupport.commitTransactionAfterReturning (TransactionAspectSupport.java:394)
org.springframework.transaction.interceptor.Transa ctionInterceptor.invoke(TransactionInterceptor.jav a:120)
org.springframework.aop.framework.ReflectiveMethod Invocation.proceed(ReflectiveMethodInvocation.java :172)
org.springframework.aop.framework.Cglib2AopProxy$D ynamicAdvisedInterceptor.intercept(Cglib2AopProxy. java:622)
local.dao.PedidoDao$$EnhancerByCGLIB$$a9771d59_2.s ave(<generated>)
local.controller.PedidoController.finishP(PedidoCo ntroller.java:252)
sun.reflect.NativeMethodAccessorImpl.invoke0(Nativ e Method)
sun.reflect.NativeMethodAccessorImpl.invoke(Unknow n Source)
sun.reflect.DelegatingMethodAccessorImpl.invoke(Un known Source)
java.lang.reflect.Method.invoke(Unknown Source)
org.springframework.web.method.support.InvocableHa ndlerMethod.invoke(InvocableHandlerMethod.java:213 )
org.springframework.web.method.support.InvocableHa ndlerMethod.invokeForRequest(InvocableHandlerMetho d.java:126)
org.springframework.web.servlet.mvc.method.annotat ion.ServletInvocableHandlerMethod.invokeAndHandle( ServletInvocableHandlerMethod.java:96)
org.springframework.web.servlet.mvc.method.annotat ion.RequestMappingHandlerAdapter.invokeHandlerMeth od(RequestMappingHandlerAdapter.java:617)
org.springframework.web.servlet.mvc.method.annotat ion.RequestMappingHandlerAdapter.handleInternal(Re questMappingHandlerAdapter.java:578)
org.springframework.web.servlet.mvc.method.Abstrac tHandlerMethodAdapter.handle(AbstractHandlerMethod Adapter.java:80)
org.springframework.web.servlet.DispatcherServlet. doDispatch(DispatcherServlet.java:923)
org.springframework.web.servlet.DispatcherServlet. doService(DispatcherServlet.java:852)
org.springframework.web.servlet.FrameworkServlet.p rocessRequest(FrameworkServlet.java:882)
org.springframework.web.servlet.FrameworkServlet.d oGet(FrameworkServlet.java:778)
javax.servlet.http.HttpServlet.service(HttpServlet .java:617)
javax.servlet.http.HttpServlet.service(HttpServlet .java:723)
root cause

org.hibernate.PropertyAccessException: IllegalArgumentException occurred calling getter of local.model.Pedido.codigo
org.hibernate.property.BasicPropertyAccessor$Basic Getter.get(BasicPropertyAccessor.java:187)
org.hibernate.tuple.entity.AbstractEntityTuplizer. getIdentifier(AbstractEntityTuplizer.java:341)
org.hibernate.persister.entity.AbstractEntityPersi ster.getIdentifier(AbstractEntityPersister.java:43 23)
org.hibernate.persister.entity.AbstractEntityPersi ster.isTransient(AbstractEntityPersister.java:4045 )
org.hibernate.engine.internal.ForeignKeys.isTransi ent(ForeignKeys.java:209)
org.hibernate.engine.internal.ForeignKeys.getEntit yIdentifierIfNotUnsaved(ForeignKeys.java:248)
org.hibernate.type.EntityType.getIdentifier(Entity Type.java:459)
org.hibernate.type.ManyToOneType.nullSafeSet(ManyT oOneType.java:132)
org.hibernate.persister.entity.AbstractEntityPersi ster.dehydrate(AbstractEntityPersister.java:2603)
org.hibernate.persister.entity.AbstractEntityPersi ster.update(AbstractEntityPersister.java:2984)
org.hibernate.persister.entity.AbstractEntityPersi ster.updateOrInsert(AbstractEntityPersister.java:2 919)
org.hibernate.persister.entity.AbstractEntityPersi ster.update(AbstractEntityPersister.java:3248)
org.hibernate.action.internal.EntityUpdateAction.e xecute(EntityUpdateAction.java:140)
org.hibernate.engine.spi.ActionQueue.execute(Actio nQueue.java:362)
org.hibernate.engine.spi.ActionQueue.executeAction s(ActionQueue.java:354)
org.hibernate.engine.spi.ActionQueue.executeAction s(ActionQueue.java:276)
org.hibernate.event.internal.AbstractFlushingEvent Listener.performExecutions(AbstractFlushingEventLi stener.java:326)
org.hibernate.event.internal.DefaultFlushEventList ener.onFlush(DefaultFlushEventListener.java:52)
org.hibernate.internal.SessionImpl.flush(SessionIm pl.java:1214)
org.hibernate.internal.SessionImpl.managedFlush(Se ssionImpl.java:403)
org.hibernate.engine.transaction.internal.jdbc.Jdb cTransaction.beforeTransactionCommit(JdbcTransacti on.java:101)
org.hibernate.engine.transaction.spi.AbstractTrans actionImpl.commit(AbstractTransactionImpl.java:175 )
org.springframework.orm.hibernate4.HibernateTransa ctionManager.doCommit(HibernateTransactionManager. java:480)
org.springframework.transaction.support.AbstractPl atformTransactionManager.processCommit(AbstractPla tformTransactionManager.java:754)
org.springframework.transaction.support.AbstractPl atformTransactionManager.commit(AbstractPlatformTr ansactionManager.java:723)
org.springframework.transaction.interceptor.Transa ctionAspectSupport.commitTransactionAfterReturning (TransactionAspectSupport.java:394)
org.springframework.transaction.interceptor.Transa ctionInterceptor.invoke(TransactionInterceptor.jav a:120)
org.springframework.aop.framework.ReflectiveMethod Invocation.proceed(ReflectiveMethodInvocation.java :172)
org.springframework.aop.framework.Cglib2AopProxy$D ynamicAdvisedInterceptor.intercept(Cglib2AopProxy. java:622)
local.dao.PedidoDao$$EnhancerByCGLIB$$a9771d59_2.s ave(<generated>)
local.controller.PedidoController.finishP(PedidoCo ntroller.java:252)
sun.reflect.NativeMethodAccessorImpl.invoke0(Nativ e Method)
sun.reflect.NativeMethodAccessorImpl.invoke(Unknow n Source)
sun.reflect.DelegatingMethodAccessorImpl.invoke(Un known Source)
java.lang.reflect.Method.invoke(Unknown Source)
org.springframework.web.method.support.InvocableHa ndlerMethod.invoke(InvocableHandlerMethod.java:213 )
org.springframework.web.method.support.InvocableHa ndlerMethod.invokeForRequest(InvocableHandlerMetho d.java:126)
org.springframework.web.servlet.mvc.method.annotat ion.ServletInvocableHandlerMethod.invokeAndHandle( ServletInvocableHandlerMethod.java:96)
org.springframework.web.servlet.mvc.method.annotat ion.RequestMappingHandlerAdapter.invokeHandlerMeth od(RequestMappingHandlerAdapter.java:617)
org.springframework.web.servlet.mvc.method.annotat ion.RequestMappingHandlerAdapter.handleInternal(Re questMappingHandlerAdapter.java:578)
org.springframework.web.servlet.mvc.method.Abstrac tHandlerMethodAdapter.handle(AbstractHandlerMethod Adapter.java:80)
org.springframework.web.servlet.DispatcherServlet. doDispatch(DispatcherServlet.java:923)
org.springframework.web.servlet.DispatcherServlet. doService(DispatcherServlet.java:852)
org.springframework.web.servlet.FrameworkServlet.p rocessRequest(FrameworkServlet.java:882)
org.springframework.web.servlet.FrameworkServlet.d oGet(FrameworkServlet.java:778)
javax.servlet.http.HttpServlet.service(HttpServlet .java:617)
javax.servlet.http.HttpServlet.service(HttpServlet .java:723)
root cause
  #2 (permalink)  
Antiguo 07/11/2013, 11:58
Avatar de lozanoguido  
Fecha de Ingreso: junio-2011
Mensajes: 33
Antigüedad: 12 años, 10 meses
Puntos: 0
Respuesta: Hibernate - Consulta sobre

java.lang.IllegalArgumentException: object is not an instance of declaring class
sun.reflect.NativeMethodAccessorImpl.invoke0(Nativ e Method)
sun.reflect.NativeMethodAccessorImpl.invoke(Unknow n Source)
sun.reflect.DelegatingMethodAccessorImpl.invoke(Un known Source)
java.lang.reflect.Method.invoke(Unknown Source)
org.hibernate.property.BasicPropertyAccessor$Basic Getter.get(BasicPropertyAccessor.java:164)
org.hibernate.tuple.entity.AbstractEntityTuplizer. getIdentifier(AbstractEntityTuplizer.java:341)
org.hibernate.persister.entity.AbstractEntityPersi ster.getIdentifier(AbstractEntityPersister.java:43 23)
org.hibernate.persister.entity.AbstractEntityPersi ster.isTransient(AbstractEntityPersister.java:4045 )
org.hibernate.engine.internal.ForeignKeys.isTransi ent(ForeignKeys.java:209)
org.hibernate.engine.internal.ForeignKeys.getEntit yIdentifierIfNotUnsaved(ForeignKeys.java:248)
org.hibernate.type.EntityType.getIdentifier(Entity Type.java:459)
org.hibernate.type.ManyToOneType.nullSafeSet(ManyT oOneType.java:132)
org.hibernate.persister.entity.AbstractEntityPersi ster.dehydrate(AbstractEntityPersister.java:2603)
org.hibernate.persister.entity.AbstractEntityPersi ster.update(AbstractEntityPersister.java:2984)
org.hibernate.persister.entity.AbstractEntityPersi ster.updateOrInsert(AbstractEntityPersister.java:2 919)
org.hibernate.persister.entity.AbstractEntityPersi ster.update(AbstractEntityPersister.java:3248)
org.hibernate.action.internal.EntityUpdateAction.e xecute(EntityUpdateAction.java:140)
org.hibernate.engine.spi.ActionQueue.execute(Actio nQueue.java:362)
org.hibernate.engine.spi.ActionQueue.executeAction s(ActionQueue.java:354)
org.hibernate.engine.spi.ActionQueue.executeAction s(ActionQueue.java:276)
org.hibernate.event.internal.AbstractFlushingEvent Listener.performExecutions(AbstractFlushingEventLi stener.java:326)
org.hibernate.event.internal.DefaultFlushEventList ener.onFlush(DefaultFlushEventListener.java:52)
org.hibernate.internal.SessionImpl.flush(SessionIm pl.java:1214)
org.hibernate.internal.SessionImpl.managedFlush(Se ssionImpl.java:403)
org.hibernate.engine.transaction.internal.jdbc.Jdb cTransaction.beforeTransactionCommit(JdbcTransacti on.java:101)
org.hibernate.engine.transaction.spi.AbstractTrans actionImpl.commit(AbstractTransactionImpl.java:175 )
org.springframework.orm.hibernate4.HibernateTransa ctionManager.doCommit(HibernateTransactionManager. java:480)
org.springframework.transaction.support.AbstractPl atformTransactionManager.processCommit(AbstractPla tformTransactionManager.java:754)
org.springframework.transaction.support.AbstractPl atformTransactionManager.commit(AbstractPlatformTr ansactionManager.java:723)
org.springframework.transaction.interceptor.Transa ctionAspectSupport.commitTransactionAfterReturning (TransactionAspectSupport.java:394)
org.springframework.transaction.interceptor.Transa ctionInterceptor.invoke(TransactionInterceptor.jav a:120)
org.springframework.aop.framework.ReflectiveMethod Invocation.proceed(ReflectiveMethodInvocation.java :172)
org.springframework.aop.framework.Cglib2AopProxy$D ynamicAdvisedInterceptor.intercept(Cglib2AopProxy. java:622)
local.dao.PedidoDao$$EnhancerByCGLIB$$a9771d59_2.s ave(<generated>)
local.controller.PedidoController.finishP(PedidoCo ntroller.java:252)
sun.reflect.NativeMethodAccessorImpl.invoke0(Nativ e Method)
sun.reflect.NativeMethodAccessorImpl.invoke(Unknow n Source)
sun.reflect.DelegatingMethodAccessorImpl.invoke(Un known Source)
java.lang.reflect.Method.invoke(Unknown Source)
org.springframework.web.method.support.InvocableHa ndlerMethod.invoke(InvocableHandlerMethod.java:213 )
org.springframework.web.method.support.InvocableHa ndlerMethod.invokeForRequest(InvocableHandlerMetho d.java:126)
org.springframework.web.servlet.mvc.method.annotat ion.ServletInvocableHandlerMethod.invokeAndHandle( ServletInvocableHandlerMethod.java:96)
org.springframework.web.servlet.mvc.method.annotat ion.RequestMappingHandlerAdapter.invokeHandlerMeth od(RequestMappingHandlerAdapter.java:617)
org.springframework.web.servlet.mvc.method.annotat ion.RequestMappingHandlerAdapter.handleInternal(Re questMappingHandlerAdapter.java:578)
org.springframework.web.servlet.mvc.method.Abstrac tHandlerMethodAdapter.handle(AbstractHandlerMethod Adapter.java:80)
org.springframework.web.servlet.DispatcherServlet. doDispatch(DispatcherServlet.java:923)
org.springframework.web.servlet.DispatcherServlet. doService(DispatcherServlet.java:852)
org.springframework.web.servlet.FrameworkServlet.p rocessRequest(FrameworkServlet.java:882)
org.springframework.web.servlet.FrameworkServlet.d oGet(FrameworkServlet.java:778)
javax.servlet.http.HttpServlet.service(HttpServlet .java:617)
javax.servlet.http.HttpServlet.service(HttpServlet .java:723)
  #3 (permalink)  
Antiguo 07/11/2013, 11:59
Avatar de lozanoguido  
Fecha de Ingreso: junio-2011
Mensajes: 33
Antigüedad: 12 años, 10 meses
Puntos: 0
Respuesta: Hibernate - Consulta sobre

Mapeo de tablas:

Cliente.hbm.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="local.model.Cliente" table="clientes">
<id column="codigo" name="codigo">
<generator class="native"/>
</id>
<property column="nombre" name="nombre" />
<property column="apellido" name="apellido" />
<property column="direccion" name="direccion"/>
</class>
</hibernate-mapping>


Pedido.hbm.xml:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="local.model.Pedido" table="pedidos">
<id column="codigo" name="codigo">
<generator class="native"/>
</id>
<many-to-one name="cliente" column="codigo_cliente" class="local.model.Cliente" not-null="true"/>
<property column="estado" name="estado" />
<set name="listadodeproductos" inverse="true" lazy="true" cascade="all">
<key column="codigo_pedido"/>
<one-to-many class="local.model.ProductoForm"/>
</set>
</class>
</hibernate-mapping>


No pongo el mapeo de ProductoForm por que creo que no tengo problemas en dicho mapeo.

Clases:

Cliente:

public class Cliente {
private long codigo;
private String nombre;
private String apellido;
private String direccion;

public long getCodigo() {
return codigo;
}
public void setCodigo(long codigo) {
this.codigo = codigo;
}
public String getNombre() {
return nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public String getApellido() {
return apellido;
}
public void setApellido(String apellido) {
this.apellido = apellido;
}
public String getDireccion() {
return direccion;
}
public void setDireccion(String direccion) {
this.direccion = direccion;
}



Pedido:

public class Pedido {
private long codigo;
private Cliente cliente;
private String estado;
private Set <ProductoForm> listadodeproductos;

public void setListadodeproductos(Set<ProductoForm> list) {
this.listadodeproductos = list;
}
public Set<ProductoForm> getListadodeproductos() {
return listadodeproductos;
}

public void setEstado(String estado) {
this.estado = estado;
}
public String getEstado() {
return estado;
}

public void setCliente(Cliente cliente) {
this.cliente = cliente;
}
public Cliente getCliente() {
return cliente;
}
public void setCodigo(long codigo) {
this.codigo = codigo;
}
public long getCodigo() {
return codigo;
}



Paso a explicarles lo que deseo, cada pedido tiene su propio ID autoincremental en la bd, y a su vez posee la FK del codigo del cliente, por lo cual la tabla de Pedido es :

codigo - Bigint - Primary Key - Not Null
codigo_cliente - BigInt - Foreign key (Cliente.codigo) - Not null
Estado - Varchar(50)


y la Tabla Cliente:

Codigo - Bigint - PrimaryKey - NotNull
Nombre - Varchar (100)
Apellido -Varchar (100)
Direccion - Varchar (100)


Si alguien tiene idea o ve donde esta el error quisiera si me podria dar una mano desde ya, muchas gracias!!!!

Saludos Gente!!
  #4 (permalink)  
Antiguo 09/11/2013, 04:36
Avatar de fpalomar  
Fecha de Ingreso: noviembre-2003
Mensajes: 123
Antigüedad: 20 años, 4 meses
Puntos: 3
Respuesta: Hibernate - Consulta sobre

Hola,

Yo también soy nuevo y veo que utilizas Spring bueno yo Struts2 aunque no se si habrá diferencia. ¿Podrías poner el diseño de la persisténcia para intentar ver por dónde van los tiros?

Saludos
  #5 (permalink)  
Antiguo 11/11/2013, 04:46
 
Fecha de Ingreso: febrero-2011
Mensajes: 672
Antigüedad: 13 años, 2 meses
Puntos: 78
Respuesta: Hibernate - Consulta sobre

Concretamente, se te queja de:

IllegalArgumentException occurred calling getter of local.model.Pedido.codigo
  #6 (permalink)  
Antiguo 11/11/2013, 05:48
Avatar de fpalomar  
Fecha de Ingreso: noviembre-2003
Mensajes: 123
Antigüedad: 20 años, 4 meses
Puntos: 3
Respuesta: Hibernate - Consulta sobre

Hola,

¿Podría ser que el guetter no lo cogiera por el tipo que se utiliza?

public long getCodigo() {
return codigo;
}

Es decir que no permitiera el long y tuviera que ser real o de otro tipo.

Saludos
  #7 (permalink)  
Antiguo 11/11/2013, 07:07
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 15 años, 7 meses
Puntos: 188
Respuesta: Hibernate - Consulta sobre

Igual en la tabla de base de datos código está metido como Integer o un tipo que no sea un long...

... También puede ser que debas usar un Long (wrapper) en vez de un long (tipo primitivo)
__________________
if (fuzzy && smooth) {
fuzzylog = "c00l";
return true;
}
  #8 (permalink)  
Antiguo 11/11/2013, 08:12
Avatar de lozanoguido  
Fecha de Ingreso: junio-2011
Mensajes: 33
Antigüedad: 12 años, 10 meses
Puntos: 0
Respuesta: Hibernate - Consulta sobre

Voy a probar cambiando los tipos de datos, a ver si es solo eso :)
gracias por sus respuestas, y les estaré comentando las novedades
  #9 (permalink)  
Antiguo 11/11/2013, 08:15
Avatar de fpalomar  
Fecha de Ingreso: noviembre-2003
Mensajes: 123
Antigüedad: 20 años, 4 meses
Puntos: 3
Respuesta: Hibernate - Consulta sobre

Hola,

Al menos en mi caso me sirve para seguir aprendiendo, para mi Fuzzylog y ElAthlit son los maestros.

Saludos
  #10 (permalink)  
Antiguo 11/11/2013, 08:31
Avatar de lozanoguido  
Fecha de Ingreso: junio-2011
Mensajes: 33
Antigüedad: 12 años, 10 meses
Puntos: 0
Respuesta: Hibernate - Consulta sobre

Bien! cambie todos los long por Integer por que la verdad no se para que le habia puesto long a esos atributos y dejo de arrojarme dicho error! :) muchas gracias por la info que me han dado!

ahora, les hago una consulta, tengo este problema:

Hibernate: select productosl0_.codigo as codigo12_, productosl0_.descripcion as descripc3_12_, productosl0_.precio as precio12_, productosl0_.relacion_vp as relacion5_12_ from productos productosl0_ where productosl0_.tipo='PL'
Hibernate: insert into pedidos (codigo_cliente, estado) values (?, ?)
Hibernate: update detalle_pedidos set codigo_pedido=?, descripcion=?, cantidad=?, peso=?, volumen=? where id=?
Nov 11, 2013 11:32:35 AM org.hibernate.engine.jdbc.batch.internal.AbstractB atchImpl release
INFO: HHH000010: On release of batch it still contained JDBC statements
Nov 11, 2013 11:32:35 AM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet appServlet threw exception
org.hibernate.StaleStateException: Batch update returned unexpected row count from update [0]; actual row count: 0; expected: 1
at org.hibernate.jdbc.Expectations$BasicExpectation.c heckBatched(Expectations.java:81)
at org.hibernate.jdbc.Expectations$BasicExpectation.v erifyOutcome(Expectations.java:73)
at org.hibernate.engine.jdbc.batch.internal.NonBatchi ngBatch.addToBatch(NonBatchingBatch.java:57)
at org.hibernate.persister.entity.AbstractEntityPersi ster.update(AbstractEntityPersister.java:3017)
at org.hibernate.persister.entity.AbstractEntityPersi ster.updateOrInsert(AbstractEntityPersister.java:2 919)
at org.hibernate.persister.entity.AbstractEntityPersi ster.update(AbstractEntityPersister.java:3248)
at org.hibernate.action.internal.EntityUpdateAction.e xecute(EntityUpdateAction.java:140)
at org.hibernate.engine.spi.ActionQueue.execute(Actio nQueue.java:362)
at org.hibernate.engine.spi.ActionQueue.executeAction s(ActionQueue.java:354)
at org.hibernate.engine.spi.ActionQueue.executeAction s(ActionQueue.java:276)
at org.hibernate.event.internal.AbstractFlushingEvent Listener.performExecutions(AbstractFlushingEventLi stener.java:326)
at org.hibernate.event.internal.DefaultFlushEventList ener.onFlush(DefaultFlushEventListener.java:52)
at org.hibernate.internal.SessionImpl.flush(SessionIm pl.java:1214)
at org.hibernate.internal.SessionImpl.managedFlush(Se ssionImpl.java:403)
at org.hibernate.engine.transaction.internal.jdbc.Jdb cTransaction.beforeTransactionCommit(JdbcTransacti on.java:101)
at org.hibernate.engine.transaction.spi.AbstractTrans actionImpl.commit(AbstractTransactionImpl.java:175 )
at org.springframework.orm.hibernate4.HibernateTransa ctionManager.doCommit(HibernateTransactionManager. java:480)
at org.springframework.transaction.support.AbstractPl atformTransactionManager.processCommit(AbstractPla tformTransactionManager.java:754)
at org.springframework.transaction.support.AbstractPl atformTransactionManager.commit(AbstractPlatformTr ansactionManager.java:723)
at org.springframework.transaction.interceptor.Transa ctionAspectSupport.commitTransactionAfterReturning (TransactionAspectSupport.java:394)
at org.springframework.transaction.interceptor.Transa ctionInterceptor.invoke(TransactionInterceptor.jav a:120)
at org.springframework.aop.framework.ReflectiveMethod Invocation.proceed(ReflectiveMethodInvocation.java :172)
at org.springframework.aop.framework.Cglib2AopProxy$D ynamicAdvisedInterceptor.intercept(Cglib2AopProxy. java:622)
at local.dao.PedidoDao$$EnhancerByCGLIB$$6a8df73e_2.s ave(<generated>)
at local.controller.PedidoController.finishP(PedidoCo ntroller.java:253)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Nativ e Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknow n Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Un known Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.springframework.web.method.support.InvocableHa ndlerMethod.invoke(InvocableHandlerMethod.java:213 )
at org.springframework.web.method.support.InvocableHa ndlerMethod.invokeForRequest(InvocableHandlerMetho d.java:126)
at org.springframework.web.servlet.mvc.method.annotat ion.ServletInvocableHandlerMethod.invokeAndHandle( ServletInvocableHandlerMethod.java:96)
at org.springframework.web.servlet.mvc.method.annotat ion.RequestMappingHandlerAdapter.invokeHandlerMeth od(RequestMappingHandlerAdapter.java:617)
at org.springframework.web.servlet.mvc.method.annotat ion.RequestMappingHandlerAdapter.handleInternal(Re questMappingHandlerAdapter.java:578)
at org.springframework.web.servlet.mvc.method.Abstrac tHandlerMethodAdapter.handle(AbstractHandlerMethod Adapter.java:80)
at org.springframework.web.servlet.DispatcherServlet. doDispatch(DispatcherServlet.java:923)
at org.springframework.web.servlet.DispatcherServlet. doService(DispatcherServlet.java:852)
at org.springframework.web.servlet.FrameworkServlet.p rocessRequest(FrameworkServlet.java:882)
at org.springframework.web.servlet.FrameworkServlet.d oGet(FrameworkServlet.java:778)
at javax.servlet.http.HttpServlet.service(HttpServlet .java:617)
at javax.servlet.http.HttpServlet.service(HttpServlet .java:723)
at org.apache.catalina.core.ApplicationFilterChain.in ternalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.do Filter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invo ke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invo ke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke( StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke (ErrorReportValve.java:103)
at org.apache.catalina.core.StandardEngineValve.invok e(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.servic e(CoyoteAdapter.java:293)
at org.apache.coyote.http11.Http11Processor.process(H ttp11Processor.java:861)
at org.apache.coyote.http11.Http11Protocol$Http11Conn ectionHandler.process(Http11Protocol.java:606)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run( JIoEndpoint.java:489)
at java.lang.Thread.run(Unknown Source)


Como veo intenta hacer un UPDATE a la base de datos...como podria hacer para que haga directamente un insert?

Es por algun atributo que le estoy indicando en el mapeo?

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="local.model.Pedido" table="pedidos">
<id column="codigo" name="codigo">
<generator class="native"/>
</id>
<many-to-one name="cliente" column="codigo_cliente" class="local.model.Cliente" not-null="true"/>
<property column="estado" name="estado" />
<set name="listadodeproductos" inverse="true" lazy="true" cascade="all">
<key column="codigo_pedido"/>
<one-to-many class="local.model.ProductoForm"/>
</set>
</class>
</hibernate-mapping>


Desde ya muchas gracias!!
  #11 (permalink)  
Antiguo 11/11/2013, 09:08
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 15 años, 7 meses
Puntos: 188
Respuesta: Hibernate - Consulta sobre

En hibernate se manejan entidades que son reflejos de las tablas de la base de datos con las que trabajamos.

Una entidad (objeto java) tiene que tener los mismos tipos de datos que las columnas con las que trabaja. El mapeo (hbm) hace de enlace entre la entidad java y la base de datos.

De ahi que lo de cambiar el ID a Integer no es algo que se pueda hacer a la ligera, ya que tiene que estar en concordancia con el tipo de dato que se muestre en esa columna (hay tablas de equivalencias entre tipos de datos de una determinada BD y tipos de datos Java).

Por otra parte a la hora de guardar tienes varios métodos. Los que mas se usan son saveOrUptade (cuando puedes guardar o actualizar una entidad) y merge (cuando modificas solo unos valores y no quieres recuperar toda la entidad de BD para volver a guardar, ya que no procesa los datos null, al contrario que el método anterior.

En tu caso cuando haces un insert en la tabla "pedidos" te está intentando hacer un update en la tabla "detalle_pedidos".

Mira si el mapeo es correcto o en tu código estás intentando hacer un update de algo que no tiene por qué existir.

Por cierto, cuidado con modificar una entidad para procesarla internamente. Al hacer eso te la intenta actualizar en base de datos aunque no le digas que la guarde (por el tema de persistencia). Es por eso que en el procesamiento interno se usan los Dtos en vez de los Pojos o entidades.

Además, sobre todo en casos que tengas que procesar entradas en diferentes tablas durante un proceso transaccional, a veces es preciso realizar un flush de la sesión después de realizar un insert o update en la base de datos para que se sincronice el estado de la aplicación con el de la BD, ya que si no hibernate hace todas las comprobaciones seguidas para las diferentes tablas en vez de ir una por una en orden (con lo cual a lo mejor no se enteraría de que has hecho un insert).
__________________
if (fuzzy && smooth) {
fuzzylog = "c00l";
return true;
}
  #12 (permalink)  
Antiguo 11/11/2013, 09:18
Avatar de lozanoguido  
Fecha de Ingreso: junio-2011
Mensajes: 33
Antigüedad: 12 años, 10 meses
Puntos: 0
Respuesta: Hibernate - Consulta sobre

Comprendo lo que me decis, pero lo que no se se que sentencia hace que Hibernate intente hacer un update en vez de hacer un insert a la tabla detalle_pedidos?

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="local.model.ProductoForm" table="detalle_pedidos">
<id column="id" name="id">
<generator class="native"/>
</id>
<many-to-one name="codigo_pedido" class="local.model.Pedido" column="codigo_pedido" not-null="true" />
<property column="descripcion" name="descripcion" />
<property column="cantidad" name="cantidad" />
<property column="peso" name="peso" />
<property column="volumen" name="volumen" />
</class>
</hibernate-mapping>

Desde ya, muchas gracias por tu tiempo Fuzzylog!
  #13 (permalink)  
Antiguo 11/11/2013, 09:24
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 15 años, 7 meses
Puntos: 188
Respuesta: Hibernate - Consulta sobre

¿Cómo hace tu código java para guardar un ProductoForm?
__________________
if (fuzzy && smooth) {
fuzzylog = "c00l";
return true;
}
  #14 (permalink)  
Antiguo 11/11/2013, 09:32
Avatar de lozanoguido  
Fecha de Ingreso: junio-2011
Mensajes: 33
Antigüedad: 12 años, 10 meses
Puntos: 0
Respuesta: Hibernate - Consulta sobre

En si yo estoy haciendo un Pedido.save() desde el controlador de pedido, supongo que al estar mapeado que un pedido contiene N productosforms este se encarga de llamar a productoform.save() que se encuentra en el DAO de ProductoForm:

@Transactional(readOnly = false, propagation = Propagation.REQUIRED)
public void save(ProductoForm productoform) {
Session session = sessionFactory.getCurrentSession();
session.save(productoform);

}


Estoy algo pedido, lo se :(
  #15 (permalink)  
Antiguo 11/11/2013, 09:52
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 15 años, 7 meses
Puntos: 188
Respuesta: Hibernate - Consulta sobre

Prueba a mapearlo a la inversa, es decir desde pedido añadirlo como

<set name="detallePedidos" table="detalle_pedidos" inverse="true" fetch="select">
<key>
<column name="codigo_pedido" not-null="true" />
</key>
<one-to-many class="local.model.ProductoForm" />
</set>

Luego habrá que añadir un set de ProductoForm en tu objeto Pedido, con sus getters y setters.
__________________
if (fuzzy && smooth) {
fuzzylog = "c00l";
return true;
}
  #16 (permalink)  
Antiguo 11/11/2013, 10:31
Avatar de lozanoguido  
Fecha de Ingreso: junio-2011
Mensajes: 33
Antigüedad: 12 años, 10 meses
Puntos: 0
Respuesta: Hibernate - Consulta sobre

Ahi lo modifique como estaba y quedo asi:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="local.model.Pedido" table="pedidos">
<id column="codigo" name="codigo">
<generator class="native"/>
</id>
<many-to-one name="cliente" column="codigo_cliente" class="local.model.Cliente" not-null="true"/>
<property column="estado" name="estado" />
<!-- <set name="listadodeproductos" inverse="true" lazy="true" cascade="all">
<key column="codigo_pedido"/>
<one-to-many class="local.model.ProductoForm"/>
</set>-->
<set name="listadodeproductos" table="detalle_pedidos" inverse="true" fetch="select">
<key>
<column name="codigo_pedido" not-null="true" />
</key>
<one-to-many class="local.model.ProductoForm" />
</set>
</class>
</hibernate-mapping>


Me guarda el pedido, pero el detalle no... me fijo las sentencias que realiza a la bd y solo hace la siguiente:

-Hibernate: insert into pedidos (codigo_cliente, estado) values (?, ?)

Por lo cual nunca accede a hacer el insert a la tabla detalle_pedido
  #17 (permalink)  
Antiguo 11/11/2013, 11:06
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 15 años, 7 meses
Puntos: 188
Respuesta: Hibernate - Consulta sobre

una vez hagas Pedido.save() tienes que hacer un flush de la sesión y recuperar el Id que hibernate ha asignado al pedido.

Con eso creas un ProductoForm (si no lo tienes ya), completando con el codigo de pedido y entonces tienes que indicar tú que se haga el ProductoForm.save()
__________________
if (fuzzy && smooth) {
fuzzylog = "c00l";
return true;
}
  #18 (permalink)  
Antiguo 11/11/2013, 11:20
Avatar de lozanoguido  
Fecha de Ingreso: junio-2011
Mensajes: 33
Antigüedad: 12 años, 10 meses
Puntos: 0
Respuesta: Hibernate - Consulta sobre

osea que si tengo un listado de productoform en el pedido tengo que luego de hacer el save y el flush, iterar el listado de producto form que contiene dicho pedido y comenzar a realizar el .save por cada item...no?
  #19 (permalink)  
Antiguo 12/11/2013, 03:00
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 15 años, 7 meses
Puntos: 188
Respuesta: Hibernate - Consulta sobre

Sí. Supongo que por cada pedido tienes varios items.

Ejemplo:
Pedido 1 > 3 uds Item1, 2 uds item2, 4 uds item3.
Pedido 2 > 2 uds Item2, 3 uds item 4.

Pues cuando guardes el pedido, de ahi tienes que obtener el ID de pedido, que como has dicho antes se asigna durante el insert (así que en el save tienes que recuperar de alguna manera el objeto pedido con su ID ya cubierto).

Es posible que llegado a este punto una vez hagas un insert, si no te devuelve directamente el id en el objeto, no te deje consultar. Si ves que tienes este problema, en ese caso hay que consultar antes el valor del id que tengas y asumir que el id va a ser el idConsultado + 1. Pero trata de evitar esto.

Cuando tengas el ID tendrás que usarlo para completar los datos de los productoform e insertarlos en BD luego.
__________________
if (fuzzy && smooth) {
fuzzylog = "c00l";
return true;
}
  #20 (permalink)  
Antiguo 12/11/2013, 07:26
Avatar de lozanoguido  
Fecha de Ingreso: junio-2011
Mensajes: 33
Antigüedad: 12 años, 10 meses
Puntos: 0
Desacuerdo Respuesta: Hibernate - Consulta sobre

Si, después de hacer el save a pedido por medio de debbug me fijo y me autocompleta el valor del id, asi que tranquilamente puedo hacer pedido.getId() para completar el atributo del detalle_pedido, y verifico que al momento de hacer el save de detalle_pedido tenga todos los atributos completos :) peeeeeeeeeeero, aca vuelve el viejo problema :



type Exception report

message Request processing failed; nested exception is org.hibernate.PropertyAccessException: IllegalArgumentException occurred calling getter of local.model.Pedido.codigo

description The server encountered an internal error that prevented it from fulfilling this request.

exception

org.springframework.web.util.NestedServletExceptio n: Request processing failed; nested exception is org.hibernate.PropertyAccessException: IllegalArgumentException occurred calling getter of local.model.Pedido.codigo
org.springframework.web.servlet.FrameworkServlet.p rocessRequest(FrameworkServlet.java:894)
org.springframework.web.servlet.FrameworkServlet.d oGet(FrameworkServlet.java:778)
javax.servlet.http.HttpServlet.service(HttpServlet .java:617)
javax.servlet.http.HttpServlet.service(HttpServlet .java:723)
root cause

org.hibernate.PropertyAccessException: IllegalArgumentException occurred calling getter of local.model.Pedido.codigo
org.hibernate.property.BasicPropertyAccessor$Basic Getter.get(BasicPropertyAccessor.java:187)
org.hibernate.tuple.entity.AbstractEntityTuplizer. getIdentifier(AbstractEntityTuplizer.java:341)
org.hibernate.persister.entity.AbstractEntityPersi ster.getIdentifier(AbstractEntityPersister.java:43 23)
org.hibernate.persister.entity.AbstractEntityPersi ster.isTransient(AbstractEntityPersister.java:4045 )
org.hibernate.engine.internal.ForeignKeys.isTransi ent(ForeignKeys.java:209)
org.hibernate.engine.internal.ForeignKeys$Nullifie r.isNullifiable(ForeignKeys.java:165)
org.hibernate.engine.internal.ForeignKeys$Nullifie r.access$000(ForeignKeys.java:50)
org.hibernate.engine.internal.ForeignKeys.collectN onNullableTransientEntities(ForeignKeys.java:318)
org.hibernate.engine.internal.ForeignKeys.findNonN ullableTransientEntities(ForeignKeys.java:290)
org.hibernate.action.internal.AbstractEntityInsert Action.findNonNullableTransientEntities(AbstractEn tityInsertAction.java:105)
org.hibernate.engine.spi.ActionQueue.addInsertActi on(ActionQueue.java:180)
org.hibernate.engine.spi.ActionQueue.addAction(Act ionQueue.java:167)
org.hibernate.event.internal.AbstractSaveEventList ener.addInsertAction(AbstractSaveEventListener.jav a:320)
org.hibernate.event.internal.AbstractSaveEventList ener.performSaveOrReplicate(AbstractSaveEventListe ner.java:287)
org.hibernate.event.internal.AbstractSaveEventList ener.performSave(AbstractSaveEventListener.java:19 3)
org.hibernate.event.internal.AbstractSaveEventList ener.saveWithGeneratedId(AbstractSaveEventListener .java:126)
org.hibernate.event.internal.DefaultSaveOrUpdateEv entListener.saveWithGeneratedOrRequestedId(Default SaveOrUpdateEventListener.java:204)
org.hibernate.event.internal.DefaultSaveEventListe ner.saveWithGeneratedOrRequestedId(DefaultSaveEven tListener.java:55)
org.hibernate.event.internal.DefaultSaveOrUpdateEv entListener.entityIsTransient(DefaultSaveOrUpdateE ventListener.java:189)
org.hibernate.event.internal.DefaultSaveEventListe ner.performSaveOrUpdate(DefaultSaveEventListener.j ava:49)
org.hibernate.event.internal.DefaultSaveOrUpdateEv entListener.onSaveOrUpdate(DefaultSaveOrUpdateEven tListener.java:90)
org.hibernate.internal.SessionImpl.fireSave(Sessio nImpl.java:757)
org.hibernate.internal.SessionImpl.save(SessionImp l.java:749)
org.hibernate.internal.SessionImpl.save(SessionImp l.java:745)
local.dao.ProductoFormDao.save(ProductoFormDao.jav a:32)
local.dao.ProductoFormDao$$FastClassByCGLIB$$52749 2f.invoke(<generated>)
net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy. java:191)
org.springframework.aop.framework.Cglib2AopProxy$C glibMethodInvocation.invokeJoinpoint(Cglib2AopProx y.java:689)
org.springframework.aop.framework.ReflectiveMethod Invocation.proceed(ReflectiveMethodInvocation.java :150)
org.springframework.transaction.interceptor.Transa ctionInterceptor.invoke(TransactionInterceptor.jav a:110)
org.springframework.aop.framework.ReflectiveMethod Invocation.proceed(ReflectiveMethodInvocation.java :172)
org.springframework.aop.framework.Cglib2AopProxy$D ynamicAdvisedInterceptor.intercept(Cglib2AopProxy. java:622)
local.dao.ProductoFormDao$$EnhancerByCGLIB$$99dc6e 9c_2.save(<generated>)
local.controller.PedidoController.finishP(PedidoCo ntroller.java:262)
sun.reflect.NativeMethodAccessorImpl.invoke0(Nativ e Method)
sun.reflect.NativeMethodAccessorImpl.invoke(Unknow n Source)
sun.reflect.DelegatingMethodAccessorImpl.invoke(Un known Source)
java.lang.reflect.Method.invoke(Unknown Source)
org.springframework.web.method.support.InvocableHa ndlerMethod.invoke(InvocableHandlerMethod.java:213 )
org.springframework.web.method.support.InvocableHa ndlerMethod.invokeForRequest(InvocableHandlerMetho d.java:126)
org.springframework.web.servlet.mvc.method.annotat ion.ServletInvocableHandlerMethod.invokeAndHandle( ServletInvocableHandlerMethod.java:96)
org.springframework.web.servlet.mvc.method.annotat ion.RequestMappingHandlerAdapter.invokeHandlerMeth od(RequestMappingHandlerAdapter.java:617)
org.springframework.web.servlet.mvc.method.annotat ion.RequestMappingHandlerAdapter.handleInternal(Re questMappingHandlerAdapter.java:578)
org.springframework.web.servlet.mvc.method.Abstrac tHandlerMethodAdapter.handle(AbstractHandlerMethod Adapter.java:80)
org.springframework.web.servlet.DispatcherServlet. doDispatch(DispatcherServlet.java:923)
org.springframework.web.servlet.DispatcherServlet. doService(DispatcherServlet.java:852)
org.springframework.web.servlet.FrameworkServlet.p rocessRequest(FrameworkServlet.java:882)
org.springframework.web.servlet.FrameworkServlet.d oGet(FrameworkServlet.java:778)
javax.servlet.http.HttpServlet.service(HttpServlet .java:617)
javax.servlet.http.HttpServlet.service(HttpServlet .java:723)
  #21 (permalink)  
Antiguo 12/11/2013, 07:29
Avatar de lozanoguido  
Fecha de Ingreso: junio-2011
Mensajes: 33
Antigüedad: 12 años, 10 meses
Puntos: 0
Sonrisa Respuesta: Hibernate - Consulta sobre

root cause

java.lang.IllegalArgumentException: object is not an instance of declaring class
sun.reflect.NativeMethodAccessorImpl.invoke0(Nativ e Method)
sun.reflect.NativeMethodAccessorImpl.invoke(Unknow n Source)
sun.reflect.DelegatingMethodAccessorImpl.invoke(Un known Source)
java.lang.reflect.Method.invoke(Unknown Source)
org.hibernate.property.BasicPropertyAccessor$Basic Getter.get(BasicPropertyAccessor.java:164)
org.hibernate.tuple.entity.AbstractEntityTuplizer. getIdentifier(AbstractEntityTuplizer.java:341)
org.hibernate.persister.entity.AbstractEntityPersi ster.getIdentifier(AbstractEntityPersister.java:43 23)
org.hibernate.persister.entity.AbstractEntityPersi ster.isTransient(AbstractEntityPersister.java:4045 )
org.hibernate.engine.internal.ForeignKeys.isTransi ent(ForeignKeys.java:209)
org.hibernate.engine.internal.ForeignKeys$Nullifie r.isNullifiable(ForeignKeys.java:165)
org.hibernate.engine.internal.ForeignKeys$Nullifie r.access$000(ForeignKeys.java:50)
org.hibernate.engine.internal.ForeignKeys.collectN onNullableTransientEntities(ForeignKeys.java:318)
org.hibernate.engine.internal.ForeignKeys.findNonN ullableTransientEntities(ForeignKeys.java:290)
org.hibernate.action.internal.AbstractEntityInsert Action.findNonNullableTransientEntities(AbstractEn tityInsertAction.java:105)
org.hibernate.engine.spi.ActionQueue.addInsertActi on(ActionQueue.java:180)
org.hibernate.engine.spi.ActionQueue.addAction(Act ionQueue.java:167)
org.hibernate.event.internal.AbstractSaveEventList ener.addInsertAction(AbstractSaveEventListener.jav a:320)
org.hibernate.event.internal.AbstractSaveEventList ener.performSaveOrReplicate(AbstractSaveEventListe ner.java:287)
org.hibernate.event.internal.AbstractSaveEventList ener.performSave(AbstractSaveEventListener.java:19 3)
org.hibernate.event.internal.AbstractSaveEventList ener.saveWithGeneratedId(AbstractSaveEventListener .java:126)
org.hibernate.event.internal.DefaultSaveOrUpdateEv entListener.saveWithGeneratedOrRequestedId(Default SaveOrUpdateEventListener.java:204)
org.hibernate.event.internal.DefaultSaveEventListe ner.saveWithGeneratedOrRequestedId(DefaultSaveEven tListener.java:55)
org.hibernate.event.internal.DefaultSaveOrUpdateEv entListener.entityIsTransient(DefaultSaveOrUpdateE ventListener.java:189)
org.hibernate.event.internal.DefaultSaveEventListe ner.performSaveOrUpdate(DefaultSaveEventListener.j ava:49)
org.hibernate.event.internal.DefaultSaveOrUpdateEv entListener.onSaveOrUpdate(DefaultSaveOrUpdateEven tListener.java:90)
org.hibernate.internal.SessionImpl.fireSave(Sessio nImpl.java:757)
org.hibernate.internal.SessionImpl.save(SessionImp l.java:749)
org.hibernate.internal.SessionImpl.save(SessionImp l.java:745)
local.dao.ProductoFormDao.save(ProductoFormDao.jav a:32)
local.dao.ProductoFormDao$$FastClassByCGLIB$$52749 2f.invoke(<generated>)
net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy. java:191)
org.springframework.aop.framework.Cglib2AopProxy$C glibMethodInvocation.invokeJoinpoint(Cglib2AopProx y.java:689)
org.springframework.aop.framework.ReflectiveMethod Invocation.proceed(ReflectiveMethodInvocation.java :150)
org.springframework.transaction.interceptor.Transa ctionInterceptor.invoke(TransactionInterceptor.jav a:110)
org.springframework.aop.framework.ReflectiveMethod Invocation.proceed(ReflectiveMethodInvocation.java :172)
org.springframework.aop.framework.Cglib2AopProxy$D ynamicAdvisedInterceptor.intercept(Cglib2AopProxy. java:622)
local.dao.ProductoFormDao$$EnhancerByCGLIB$$99dc6e 9c_2.save(<generated>)
local.controller.PedidoController.finishP(PedidoCo ntroller.java:262)
sun.reflect.NativeMethodAccessorImpl.invoke0(Nativ e Method)
sun.reflect.NativeMethodAccessorImpl.invoke(Unknow n Source)
sun.reflect.DelegatingMethodAccessorImpl.invoke(Un known Source)
java.lang.reflect.Method.invoke(Unknown Source)
org.springframework.web.method.support.InvocableHa ndlerMethod.invoke(InvocableHandlerMethod.java:213 )
org.springframework.web.method.support.InvocableHa ndlerMethod.invokeForRequest(InvocableHandlerMetho d.java:126)
org.springframework.web.servlet.mvc.method.annotat ion.ServletInvocableHandlerMethod.invokeAndHandle( ServletInvocableHandlerMethod.java:96)
org.springframework.web.servlet.mvc.method.annotat ion.RequestMappingHandlerAdapter.invokeHandlerMeth od(RequestMappingHandlerAdapter.java:617)
org.springframework.web.servlet.mvc.method.annotat ion.RequestMappingHandlerAdapter.handleInternal(Re questMappingHandlerAdapter.java:578)
org.springframework.web.servlet.mvc.method.Abstrac tHandlerMethodAdapter.handle(AbstractHandlerMethod Adapter.java:80)
org.springframework.web.servlet.DispatcherServlet. doDispatch(DispatcherServlet.java:923)
org.springframework.web.servlet.DispatcherServlet. doService(DispatcherServlet.java:852)
org.springframework.web.servlet.FrameworkServlet.p rocessRequest(FrameworkServlet.java:882)
org.springframework.web.servlet.FrameworkServlet.d oGet(FrameworkServlet.java:778)
javax.servlet.http.HttpServlet.service(HttpServlet .java:617)
javax.servlet.http.HttpServlet.service(HttpServlet .java:723)


Y ya he cambiado el tipo de dato:

public class Pedido {
private Integer codigo;
private Cliente cliente;
private String estado;
private Set <ProductoForm> listadodeproductos;

public void setCodigo(Integer codigo) {
this.codigo = codigo;
}
public Integer getCodigo() {
return codigo;
}


Base de datos:

- codigo bigint(20)
- codigo_cliente bigint(20)
- estado varchar(20)

mapeo:

<class name="local.model.Pedido" table="pedidos">
<id column="codigo" name="codigo">
<generator class="native"/>
</id>
<many-to-one name="cliente" column="codigo_cliente" class="local.model.Cliente" not-null="true"/>
<property column="estado" name="estado" />
<set name="listadodeproductos" table="detalle_pedidos" inverse="true" fetch="select">
<key>
<column name="codigo_pedido" not-null="true" />
</key>
<one-to-many class="local.model.ProductoForm" />
</set>
</class>
  #22 (permalink)  
Antiguo 12/11/2013, 07:30
Avatar de lozanoguido  
Fecha de Ingreso: junio-2011
Mensajes: 33
Antigüedad: 12 años, 10 meses
Puntos: 0
De acuerdo Respuesta: Hibernate - Consulta sobre

Nuevamente, te agradezco por tu tiempo y dedicación a mis consultas y problemas Fuzzylog !
  #23 (permalink)  
Antiguo 12/11/2013, 11:58
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 15 años, 7 meses
Puntos: 188
Respuesta: Hibernate - Consulta sobre

Te has asegurado que el tipo de dato java del codigo se corresponde con el tipo de dato en BD del .hbm?

Por ejemplo en db2 un smallint (habria que examinar la tabla correspondiente en la base de datos para saber que tipo de dato corresponde a tu caso) se correspondería con un short

En el hbm para especificar un tipo de dato java equivalente tienes que hacer algo como esto:

<id name="idEjemplo" type="short">

<id name="codigo" type="java.lang.Integer">
__________________
if (fuzzy && smooth) {
fuzzylog = "c00l";
return true;
}
  #24 (permalink)  
Antiguo 12/11/2013, 12:25
Avatar de lozanoguido  
Fecha de Ingreso: junio-2011
Mensajes: 33
Antigüedad: 12 años, 10 meses
Puntos: 0
Sonrisa Respuesta: Hibernate - Consulta sobre

He verificado lo que me dijiste y en la base de datos son todos Bigint de tamaño 20, mis id en las clases son del tipo Integer agregé la sentencia "type="java.lang.Integer">" en el mapeo, y me arroja el mismo error, cambie el Integer por un int primitivo y el error continua.

Investigando un poco mas, el error aparece al poner el inverse=true (ya que si no lo pongo intenta hacer un update, en vez de un insert).

Voy a seguir investigando por si encuentro algo que me oriente sobre este error :(
  #25 (permalink)  
Antiguo 13/11/2013, 02:18
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 15 años, 7 meses
Puntos: 188
Respuesta: Hibernate - Consulta sobre

Y digo yo, el problema ahora no lo tendrás con "Cliente"?
__________________
if (fuzzy && smooth) {
fuzzylog = "c00l";
return true;
}
  #26 (permalink)  
Antiguo 13/11/2013, 10:01
Avatar de lozanoguido  
Fecha de Ingreso: junio-2011
Mensajes: 33
Antigüedad: 12 años, 10 meses
Puntos: 0
De acuerdo Respuesta: Hibernate - Consulta sobre

Al consultarlo con el prof de java, me ha dicho que tenia que cambiar varias cosas, como por ejemplo ya que trabajamos con objetos, nunca combiene tener como atributos codigos de otros objetos, sino que tener el objeto entero.... tengo que re plantear la parte uml antes de continuar cuestionando las excepciones que me arroja hibernate =)


Muchas gracias Fuzzy por tu buena onda y predisposicion!!!!

Saludos!

Etiquetas: exception, hibernate, mapeo, spring, tablas
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:48.