Tema: Ejb-cmp
Ver Mensaje Individual
  #4 (permalink)  
Antiguo 19/09/2006, 07:51
Avatar de pyanqn
pyanqn
 
Fecha de Ingreso: noviembre-2005
Mensajes: 331
Antigüedad: 19 años, 3 meses
Puntos: 8
He realizado lo que me dices pero tengo errores!!!! No puedo hacer un insert.
Te cuento

Tengo un EJB Entity CMP que se llama Cliente, tiene 3 campos:

idCliente: esta es la clave, autonumerica integer. En la base se llama id_cliente

graciaCliente: String con el nombre del cliente. en la base: gracia_cliente

dirCliente: String con la direccion. en la base: dir_cliente

Luego tengo un EJB Session que la juega de Facade y tiene un metodo para crear Clientes. es el siguiente:

public void newCliente(String nombre, String direccion) {
Cliente cli = null;
try {
javax.naming.Context context = new javax.naming.InitialContext();
ClienteHome cliHome = (ClienteHome) context.lookup("Cliente");
cli = cliHome.create(null);
System.out.println("CLIENTE CREADO.");
cli.setGraciaCliente(nombre);
cli.setDirCliente(direccion);
System.out.println("DATOS ASIGNADOS");
}
catch (NamingException ex) {
ex.printStackTrace();
}
catch (ClassCastException ex) {
ex.printStackTrace();
}
catch(CreateException err){
err.printStackTrace();
}
catch (Exception ex) {
ex.printStackTrace();
}

Eso es todo. los descriptores son:
1º jbosscmp-jdbc.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE jbosscmp-jdbc PUBLIC "-//JBoss//DTD JBOSSCMP-JDBC 4.0//EN" "http://www.jboss.org/j2ee/dtd/jbosscmp-jdbc_4_0.dtd">

<jbosscmp-jdbc>
<defaults>
<datasource>java:/MySqlDS</datasource>
<datasource-mapping>mySQL</datasource-mapping>
</defaults>
<enterprise-beans>
<entity>
<ejb-name>Cliente</ejb-name>
<datasource>MySqlDS</datasource>
<datasource-mapping>mySQL</datasource-mapping>
<table-name>cliente</table-name>
<cmp-field>
<field-name>idCliente</field-name>
<column-name>id_cliente</column-name>
<auto-increment />
</cmp-field>
<cmp-field>
<field-name>graciaCliente</field-name>
<column-name>gracia_cliente</column-name>
</cmp-field>
<cmp-field>
<field-name>dirCliente</field-name>
<column-name>dir_cliente</column-name>
</cmp-field>
<entity-command name="mysql-get-generated-keys" />
</entity>
</enterprise-beans>
</jbosscmp-jdbc>



2º el descriptor ejb-jar.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE ejb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN" "http://java.sun.com/dtd/ejb-jar_2_0.dtd">

<ejb-jar>
<display-name>OrdenesDeCompra</display-name>
<enterprise-beans>
<entity>
<ejb-name>Cliente</ejb-name>
<local-home>ordenes_de_compra.ClienteHome</local-home>
<local>ordenes_de_compra.Cliente</local>
<ejb-class>ordenes_de_compra.ClienteBean</ejb-class>
<persistence-type>Container</persistence-type>
<prim-key-class>java.lang.Object</prim-key-class>
<reentrant>False</reentrant>
<cmp-version>2.x</cmp-version>
<abstract-schema-name>Cliente</abstract-schema-name>
<cmp-field>
<field-name>idCliente</field-name>
</cmp-field>
<cmp-field>
<field-name>graciaCliente</field-name>
</cmp-field>
<cmp-field>
<field-name>dirCliente</field-name>
</cmp-field>
</entity>
<session>
<ejb-name>FacadeCliente</ejb-name>
<home>ordenes_de_compra.FacadeClienteHome</home>
<remote>ordenes_de_compra.FacadeCliente</remote>
<ejb-class>ordenes_de_compra.FacadeClienteBean</ejb-class>
<session-type>Stateful</session-type>
<transaction-type>Container</transaction-type>
</session>
</enterprise-beans>
<assembly-descriptor>
<container-transaction>
<method>
<ejb-name>Cliente</ejb-name>
<method-name>*</method-name>
</method>
<trans-attribute>Required</trans-attribute>
</container-transaction>
<container-transaction>
<method>
<ejb-name>FacadeCliente</ejb-name>
<method-name>*</method-name>
</method>
<trans-attribute>Required</trans-attribute>
</container-transaction>
</assembly-descriptor>
</ejb-jar>

En el mensaje que sigue los errores capturados al intentar crear un nuevo cliente con clave autonumerica.