Le problème est que je ne sais pas :
1- Comment déclarer, avec xdoclet, qu'un champ est numérique ?
En principe tu n'as pas besoin de le déclarer, l'information peut être déduite à partir des méthodes get/set. Mais tu peux toujours le déclarer comme ceci :
/**@ejb.pk class="java.lang.Integer" */
2- Comment écrire qu'il est auto increment ?
C'est spécifique au serveur d'application utilisé. Avec JBoss on pourrait utiliser le tag
/**@jboss.persistence auto-increment="true" */
3- Enfin, lors de la création, comment créer (donc insérer en base de données) de manière à ce qu'il prenne en compte l'id SUIVANT , je m'explique : lors de l'appel de la méthode ejbCreate, on est sensé initialiser les champs. Mais quelle valeur donner au champ auto increment ?
Le champ auto-incrément est entièrement géré par le container, tu n'as donc plus besoin de l'initialiser dans la méthode ejbCreate; initialise juste les autres champs.
En résumé, on pourrait avoir une esquisse de solution comme celle-ci :
/**
* Un bean entité avec champ auto-incrément
*
* @ejb.bean
* name="ExempleBean"
* type="CMP"
* cmp-version="2.x"
* primkey-field="id"
* view-type="local"
*
* @ejb.pk class="java.lang.Integer"
*
* @ejb.persistence
* table-name="table"
*
*/
public abstract class ExempleBean implements EntityBean {
/**
* ID (Primary Key)
*
* @ejb.interface-method
* @ejb.persistence
* column-name="ID"
* @jboss.persistence
* auto-increment="true"
*/
public abstract Integer getId();
public abstract void setId(Integer id);
/** @ejb.create-method */
public Integer ejbCreate(String autreChamp)
throws CreateException {
.....
return null;
}
public void ejbPostCreate(String autreChamp)
throws CreateException {
}
Voilà, j'espère que ça pourrait résoudre ton problème.
Partager