hi karl,
well first see this
Code:
idCabeceraCompra tipo numdoc fechaemision fechacontrolinterno idEmpresa idProveedor fechavencimiento valorventa igv totalfactura numdocrefguiaremision numdocreffactura fechaentrega
------------------- ----------- ----------- --------------- ---------------------- ------------ -------------- ------------------- ------------- ------ --------------- ------------------------ ------------------- ---------------
1000011 CABCOMGUIA 5456465 4/04/2007 4/04/2007 00200001 100001 (err) 0 0 0 45465456465 4/04/2007
10000145465456465 CABCOMFACTU 45465456465 4/04/2007 4/04/2007 00200001 100001 4/04/2007 40 0,19 47,6 5456465 (null)
see that the field fechavencimiento for the fisrt row is (err) , in linux/mysql i dont have problem, but in mysql windows, i recieve the errors that you seen
and see that for the second row value for fechaentrega is null
and note that each variable is unqiue or belong to each subclass, so
fechavencimiento for the fisrt row should be null and not (err)
here the photo about diagram class
and here the mapping file
Code:
<?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="com.lagranjita.modelo.entidades.CabeceraCompra"
table="CabeceraCompra"
discriminator-value="CABCOM"
>
<id
name="idCabeceraCompra"
column="idCabeceraCompra"
type="java.lang.String"
length="30"
>
<generator class="assigned">
<!--
To add non XDoclet generator parameters, create a file named
hibernate-generator-params-CabeceraCompra.xml
containing the additional parameters and place it in your merge dir.
-->
</generator>
</id>
<discriminator
column="tipo"
type="string"
/>
<property
name="numdoc"
type="java.lang.String"
update="true"
insert="true"
column="numdoc"
length="12"
not-null="true"
/>
<property
name="fechaemision"
type="date"
update="true"
insert="true"
column="fechaemision"
not-null="true"
/>
<property
name="fechacontrolinterno"
type="date"
update="true"
insert="true"
column="fechacontrolinterno"
not-null="true"
/>
<many-to-one
name="idEmpresa"
class="com.lagranjita.modelo.entidades.Empresa"
cascade="none"
outer-join="auto"
update="true"
insert="true"
column="idEmpresa"
not-null="true"
/>
<many-to-one
name="idProveedor"
class="com.lagranjita.modelo.entidades.Proveedor"
cascade="none"
outer-join="auto"
update="true"
insert="true"
column="idProveedor"
not-null="true"
/>
<set
name="detalleCompraGuiaRemisiones"
lazy="true"
inverse="true"
cascade="none"
sort="unsorted"
order-by="idDetalleCompraGuiaRemision"
>
<key
column="idCabeceraCompra"
>
</key>
<one-to-many
class="com.lagranjita.modelo.entidades.DetalleCompraGuiaRemision"
/>
</set>
<!--
To add non XDoclet property mappings, create a file named
hibernate-properties-CabeceraCompra.xml
containing the additional properties and place it in your merge dir.
-->
<subclass
name="com.lagranjita.modelo.entidades.FacturaCompra"
discriminator-value="CABCOMFACTU"
>
<property
name="fechavencimiento"
type="date"
update="true"
insert="true"
column="fechavencimiento"
not-null="true"
/>
<property
name="valorventa"
type="java.math.BigDecimal"
update="true"
insert="true"
column="valorventa"
length="6"
not-null="true"
/>
<property
name="igv"
type="java.math.BigDecimal"
update="true"
insert="true"
column="igv"
length="6"
not-null="true"
/>
<property
name="totalfactura"
type="java.math.BigDecimal"
update="true"
insert="true"
column="totalfactura"
length="6"
not-null="true"
/>
<property
name="numdocrefguiaremision"
type="java.lang.String"
update="true"
insert="true"
column="numdocrefguiaremision"
length="12"
not-null="true"
/>
<one-to-one
name="idCuentaProveedores"
class="com.lagranjita.modelo.entidades.CuentaProveedores"
cascade="none"
outer-join="auto"
constrained="false"
property-ref="facturaCompra"
/>
<!--
To add non XDoclet property mappings, create a file named
hibernate-properties-FacturaCompra.xml
containing the additional properties and place it in your merge dir.
-->
</subclass>
<subclass
name="com.lagranjita.modelo.entidades.GuiaRemisionCompra"
discriminator-value="CABCOMGUIA"
>
<property
name="numdocreffactura"
type="java.lang.String"
update="true"
insert="true"
column="numdocreffactura"
length="12"
not-null="true"
/>
<property
name="fechaentrega"
type="date"
update="true"
insert="true"
column="fechaentrega"
not-null="false"
/>
<!--
To add non XDoclet property mappings, create a file named
hibernate-properties-GuiaRemisionCompra.xml
containing the additional properties and place it in your merge dir.
-->
</subclass>
</class>
<query name="myqueryamountfactura"><![CDATA[
select count(*) from CabeceraCompra where tipo='CABCOMFACTU'
]]></query>
</hibernate-mapping>
and to end how i create the object with defaults values
i dont think that i forgot some detail, pls ckeck it out
Code:
/**
* <p>Metodo que sirve para retornar un objeto por default que representa la Cabecera de Guia de Remision</p>
* @param id del Proveedor, lo uso para crear la PK
* @return el objecto default
* @throws MyGlobalException en caso de falla externa lo lanzo globalmente
*/
public GuiaRemisionCompra generargetGuiaRemisionCompraIdGeneradoADO(String idProveedor)
throws MyGlobalException{
GuiaRemisionCompra guiaRemisionCompra = new GuiaRemisionCompra();
try{
guiaRemisionCompra.setIdCabeceraCompra(idProveedor.concat(getNextGuiaRemisionCompra(idProveedor)));
Empresa empresa = (Empresa) getHibernateTemplate().get(Empresa.class, "00200001" );
empresa.getCabecerascompras().add(guiaRemisionCompra);
guiaRemisionCompra.setIdEmpresa(empresa);
Proveedor proveedor = (Proveedor) getHibernateTemplate().get(Proveedor.class,idProveedor);
proveedor.getCabecerascompras().add(guiaRemisionCompra);
guiaRemisionCompra.setIdProveedor(proveedor);
guiaRemisionCompra.setNumdoc("");
guiaRemisionCompra.setNumdocreffactura("");
guiaRemisionCompra.setFechaemision(new Date());
guiaRemisionCompra.setFechaentrega(new Date());
guiaRemisionCompra.setFechacontrolinterno(new Date()); //internal control
logger.info("generargetGuiaRemisionCompraIdGeneradoADO B4 to send : guiaRemisionCompra: "+
guiaRemisionCompra.toString());
getHibernateTemplate().save(guiaRemisionCompra);
getHibernateTemplate().initialize(guiaRemisionCompra);
getHibernateTemplate().initialize(guiaRemisionCompra.getIdEmpresa());
getHibernateTemplate().initialize(guiaRemisionCompra.getIdProveedor());
}
catch(DataAccessException dae){
logger.info("generargetGuiaRemisionCompraIdGeneradoADO DataAccessException: "+dae.getMessage());
dae.printStackTrace();
throw new MyGlobalException();
}
return guiaRemisionCompra;
}
thanks so much for advanced