Mailinglist Archive: opensuse-es (762 mails)

< Previous Next >
XDoclet, generacion de EJB
  • From: Cristian Rossel Moraga <crossel@xxxxxxxx>
  • Date: 01 Aug 2003 17:01:41 -0400
  • Message-id: <1059771701.4758.14.camel@xxxxxxxxxxxxxxxx>
Como puedo con XDoclet declarar en un ENTITY BEAN CMP (HAVE_INCOME) una
PK (primary key) compuesta por tres atributos, y que dos de ellos sean
FK (foreing key)?

Usamos solo sw open source:
postgreSql 7.3.3, JBOSS 3.07, XDOCLET, ECLIPSE + LOMBOZ.

El siguiente diagrama conceptualiza nuestra problematica:

+-------------+ +-----------------------------------+
|INCOME |1 *|HAVE_INCOME |
+-------------+------+-----------------------------------|
|codeIncome PK| |date PK |
|name | |codeIncome PK,FK(references INCOME)|
+-------------+ |codeWorker PK,FK(references WORKER)|
|valor |
+-----------------------------------+
*|
|
|
1|
+-------------+
|WORKER |
+-------------|
|codeWorker PK|
|nameWorker |
+-------------+

INCOME = INGRESOS.
HAVE_INCOME = TIENE_INGRESOS.
WORKER = TRABAJADOR.
code = codigo.


+----------------------+
|Income |
+----------------------+
|PK | |
|codeIncome|nameIncome |
+----------+-----------|
|01 |salary |
|02 |bonus |
|03 |extra_hours|
+----------------------+

+------------------------+
|Worker |
+------------------------+
|PK | |
|codeWorker|nameWorker |
+----------+-------------|
|W1 |John Doe |
|W2 |William Smith|
+------------------------+

+--------------------------------------+
|HAVE_INCOME |
+--------------------------------------+
|PK |PK, FK |PK, FK | |
|date |codeIncome|codeWorker|valor|
+----------+----------+----------+-----|
|03/01/2003|01 |W1 |1000 |
|05/01/2003|02 |W1 |0500 |
|08/01/2003|02 |W1 |0300 |
|08/01/2003|03 |W1 |0500 |
|04/01/2003|01 |W2 |1000 |
|05/01/2003|02 |W2 |1500 |
|05/01/2003|03 |W2 |0200 |
+--------------------------------------+

Hemos desarrollao el siguiente codigo, pero al momento de hacer el deploy en Jboss,
este lanza la siguiente excepcion:

"attribute "icodigoestudiante" duplicated

El codigo de InscriptionEJB es:

package leufu;

import javax.ejb.EntityBean;

/**
* @ejb.bean name="Inscripcion"
* local-jndi-name="InscripcionBean"
* type="CMP"
* cmp-version="2.x"
* view-type="local"
* schema="Inscripcion"
*
* @ejb.persistence
* table-name="inscripcion"
*
* @ejb.finder
* query="SELECT OBJECT(a) FROM Inscripcion as a"
* signature="java.util.Collection findAll()"
*
* @jboss.create-table true
*
**/

public abstract class InscripcionBean implements EntityBean {

/**
*
* @ejb.create-method
*/
public InscripcionPK ejbCreate(String codigo, EstudianteLocal e, CursoLocal c) throws javax.ejb.CreateException {
setIMatricula(codigo);
return new InscripcionPK(codigo,e,c);
}

/**
* The container invokes this method immediately after it calls ejbCreate.
*
*/
public void ejbPostCreate(String codigo, EstudianteLocal e, CursoLocal c) throws javax.ejb.CreateException {
setICodigoEstudiante(e);
setICodigoCurso(c);
}

/**
*
* @ejb.persistent-field
* @ejb.pk-field
* @ejb.persistence
* @jboss.column-name imatricula
* @ejb.interface-method
*/
public abstract java.lang.String getIMatricula();

/**
* @ejb.interface-method
*/
public abstract void setIMatricula(java.lang.String IMatricula);

/**
*
*
*@ejb.persistent-field
*@ejb.pk-field
*@ejb.persiste nce
*@jboss.colum-name icodigoestudiante
*@ejb.interface-method
*

/* para las relaciones
*
*@ejb.relation name="estudiante-inscripcion"
*role-name="inscripcion-estudiante"
*target-ejb="Estudiante"
*target-role-name=" "
*target-multiple="yes"
*
*@jboss.relation related-pk-field="eCodigo"
*fk-column="icodigoestudiante"
*fk-constraint="true"
**/

public abstract leufu.EstudianteLocal getICodigoEstudiante();

/**
*
* @ejb.interface-method
*/
public abstract void setICodigoEstudiante(leufu.EstudianteLocal ICodigoEstudiante);

/**
*
* @ejb.persistent-field
* @ejb.pk-field
* @ejb.persistence
* @jboss.colum-name icodigocurso
* @ejb.interface-method

* para las relaciones
* @ejb.relation name="curso-inscripcion"
* role-name="inscripcion-curso"
* target-ejb="Curso"
* target-role-name=" "
* target-multiple="yes"
*
*@jboss.relation related-pk-field="cCodigo" *fk-column="icodigocurso"
*fk-constraint="true"
*
*
*
*/
public abstract leufu.CursoLocal getICodigoCurso();

/**
*
* @ejb.interface-method
*/
public abstract void setICodigoCurso(leufu.CursoLocal ICodigoCurso);

}

Thanks...


Cristian Rossel Moraga
CEO Leufu Ingenieria y Negocios Ltda.
Lebu, Chile, 56-41-511655.


< Previous Next >
This Thread
  • No further messages