IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Java EE Discussion :

[Débutant] Champs auto-incrémenté (identity)et EJB


Sujet :

Java EE

  1. #1
    Nouveau membre du Club
    Inscrit en
    Février 2006
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 48
    Points : 36
    Points
    36
    Par défaut [Débutant] Champs auto-incrémenté (identity)et EJB
    Bonjour à tous,

    Je développe une application J2EE avec EJB 2.0 qui sera déployée sur le serveur JBoss 4.0, et une DB sous SQL server 2000.
    J'utilise Eclipse avec le plugin MyEclipse et Xdoclet.
    Les clés primaires de presque toutes les tables de la DB sont des champs auto-incrémentés (Indentity sous sql server).
    Est-il possible de mapper ces tables à des Entity Bean? Comment écrire la méthode EJBCreate() sans gérer ce champs auto-incrémenté?
    Y'a-t-il des tags spéciaux XDoclet adaptés? Sinon y'a-t-il une solution ou dois-je recréer la DB sans champs auto-incrémenté? Qui à tuer le colonel moutarde?
    Tant de question auxquelles je ne trouve pas de réponse (je perd toujours au Cluedo)...

    Merci d'avance pour vos réponses!

  2. #2
    Nouveau membre du Club
    Inscrit en
    Février 2006
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 48
    Points : 36
    Points
    36
    Par défaut
    Je suis sur que quelqu'un à déjà été confronté à ce problème!
    SVP un ptit coup de main... dites moi simplement si je dois refaire la DB sans champs auto-incrémentés si je veux continuer à utiliser des Entity Bean CMP...

    Merci à tous.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    365
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations forums :
    Inscription : Janvier 2006
    Messages : 365
    Points : 495
    Points
    495
    Par défaut
    Tes questions ne concernant que la gestion des clés auto-incrémentées avec des entity beans CMP, je suppose que tu as déjà bien configuré le DataSource avec JBoss. Je vais donc répondre en considérant que le DataSource fonctionne correctement. Effectivement, JBoss te permet d'utiliser les champs auto-increment gérés par ta base SQL Server, tu n'as donc pas besoin de redéfinir ta DB!! D'abord, le champ "id" du bean entite doit être de type Integer. Ensuite le reste de la config se fait dans le descripteur de deploiement "jbosscmp-jdbc.xml" . Tu specifies l'Entity Command dans la section <defaults>, puis le champ "id" comme auto-increment. Le fichier "jbosscmp-jdbc.xml" doit donc ressembler à ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
        <defaults>
            <!-- ... -->
     
            <entity-command name="mssql-fetch-key" />
        </defaults>
     
       <entity>
            <ejb-name>MyEntityEJB</ejb-name>
            <table-name>NOM_TABLE</table-name>
            <cmp-field>
                <field-name>id</field-name>
                <column-name>TABLE_ID</column-name>
                <auto-increment />
            </cmp-field>
            <!-- autres champs CMP -->
        </entity>
     
       <!--  ...  -->
    L'entity-command, c'est l'objet qui se charge dans JBoss de la creation des entités dans la base, il en existe déjà configurés dans le fichier standardjbosscmp-jdbc.xml que tu pourrais consulter pour avoir une idée de la configuration par défaut utilisée par JBoss pour la persistance.
    Pour le reste, la méthode "ejbCreate()" du bean entité ne pourrait plus initialiser que les autres champs, autres que le champ "id" puisque celui-ci est géré ailleurs. Il existe aussi bien sûr des tags XDoclet permettant de générer les éléments nécessaires dans le fichier "jbosscmp-jdbc.xml" . Un exemple pourrait donner donc quelque chose comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
    /** Un bean entité avec champ autoi-increment
     *    @ejb.bean
     *         type="CMP"
     *         name="MyEntityEJB"
     *         view-type="local"
     *    @ejb.persistence
     *          table-name="NOM_TABLE"
     */
    public abstract class MyEntityEJB implements EntityBean {
         /** @ejb.create-method */
            public Integer ejbCreate (String autreChamp ) {
                  ...
                  return null;
            }
     
     
        /**
         * @ejb.interface-method
         * @ejb.pk-field
         * @ejb.persistence
         *        column-name="TABLE_ID"
         * @jboss.persistence
         *        auto-increment="true" 
         */
        public abstract Integer getId(  );
        public abstract void setId(Integer id);
     
      ....
    }
    Pour la définition de l'entity-command avec XDoclet, tu pourrais utiliser le fichier "merge" nommé jbosscmp-jdbc-defaults.xml, et ceci pour ne pas avoir à la définir individuellement pour chaque bean entité.
    Voilà, j'espère que ça te sera utile.

  4. #4
    Nouveau membre du Club
    Inscrit en
    Février 2006
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 48
    Points : 36
    Points
    36
    Par défaut
    Merci beaucoup manblaizo!
    Je t'assure, je commençais vraiment à stresser! J'ai très peu de temps pour faire cette application (c'est mon stage) et je découvre J2EE.
    Alors les coups de main qui font gagner quelques heures sont les bien venu!
    Je vais essayer cette solution lundi et je te tiens au courant.
    Encore merci et bon week-end.

  5. #5
    Nouveau membre du Club
    Inscrit en
    Février 2006
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 48
    Points : 36
    Points
    36
    Par défaut
    Voila j'ai une solution qui fonctionne (désolé Manblaizo je n'ai pas essayé ta solution...c'est une longue histoire).
    Ici c'est la clé primaire de la classe qui est gérée par le SGBD, le nom de la colonne est "num_action".
    Voici les tags Xdoclet (Class level) permettant de spécifier qu'un champs de la table est auto généré:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     * @jboss.unknown-pk class = "java.lang.Integer"
     * 					 column-name = "num_action"
     * 					 jdbc-type = "INTEGER"
     * 					 sql-type = "INTEGER"
     * 					 auto-increment = "true"
     * @jboss.entity-command name = "mssql-fetch-key"
    Apparement il existerait d'autres alternatives à l'utilisation d'une unknown-pk" et ces solutions seraient préférables point de vue performance... A voir....

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    365
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations forums :
    Inscription : Janvier 2006
    Messages : 365
    Points : 495
    Points
    495
    Par défaut
    Je suis content que tu ais trouvé une solution qui marche, et le plus important c'est surtout que tu comprennes pourquoi tu choisis une solution plutot qu'une autre. En réalité, les deux solutions sont identiques parce que pour utiliser des champs auto-increment il faut faire deux choses dans le descripteur de déploiement "jbosscmp-jdbc.xml" : définir le champ "id" comme auto-increment et puis associer le bean à un entity-command qui sache gérer ce champ auto-increment dans la base de données. C'est ce que tu fais donc notamment quand tu définis les tags XDoclet:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    *         auto-increment = "true" 
     * @jboss.entity-command name = "mssql-fetch-key"
    La différence principale avec la solution que j'avais proposée c'est que moi j'utilise un champ "id" de type java.lang.Integer, et JBoss sait comment le mapper dans la DB. Ta solution utilise le tag "unknown-pk", ce qui veut dire que le champ "id" est de type "java.lang.Object", et dans ce cas il faut préciser à JBoss comment le mapper dans la DB. En fait, cela vient du fait que la spécification EJB différencie le rôle du développeur de composant EJB à celui du déployeur du composant sur un serveur d'application donné ( bien qu'une même personne peut généralement jouer les deux roles). Il arrive que le développeur du bean n'est aucune idée du type exact à utiliser pour le champ "id" (Integer, String ...) et dans ce cas la spécification permet d'utiliser "java.lang.Object"; le type exact est donc précisé lors du déploiement. Ce qui se traduit dans le cas de JBoss par l'utilisation de "unknown-pk" pour préciser les infos de mapping nécessaires, et cela que le champ soit auto-increment ou pas.
    Pour terminer, j'aurais juste aimé te suggérer de définir l'entity-command une seule fois pour tous les entity beans, dans la section <defaults> de "jbosscmp-jdbc.xml" plutot que de délarer une ligne @jboss.entity-command name = "mssql-fetch-key" pour chaque bean, mais bon, comme c'est un stage et que tu commences à peine en J2EE on ne doit pas trop t'en demander non plus.
    salut, et bon courage !

  7. #7
    Nouveau membre du Club
    Inscrit en
    Février 2006
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 48
    Points : 36
    Points
    36
    Par défaut
    Merci pour ces précisions manblaizo, ton aide m'est très précieuse .
    Je vais appliquer tes conseils, je pense que mon stage sera en partie évalué sur la manière dont j'utilise les outils mis à ma disposition, et chaque détail peut compter.

    Bonne journée et encore merci.

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mars 2006
    Messages : 38
    Points : 37
    Points
    37
    Par défaut
    salut

    merci pour vos conseils, je les ai appliqués.
    j'utilise aussi ms sqlserver 2000 SP4 & jboss 4.0.

    Vu que j'ai perdu assez de temps sur tout ça, je poste une version qui marche pour moi. histoire qu'il n'y ait pas d'ames perdues comme je l'ai été pendant 2 jours

    jbosscmp-jdbc-defaults.xml :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    <defaults>
    	<datasource>java:/MyDBDS</datasource>
    	<datasource-mapping>MS SQLSERVER2000</datasource-mapping>
     
    	<create-table>false</create-table> 
    	<remove-table>false</remove-table> 
     
    	<read-only>false</read-only> 
    	<read-time-out>300000</read-time-out> 
     
    	<row-locking>false</row-locking> 
     
    	<pk-constraint>true</pk-constraint> 
    	<fk-constraint>true</fk-constraint> 
     
    	<preferred-relation-mapping>foreign-key</preferred-relation-mapping> 
     
    	<read-ahead> 
    		<strategy>on-load</strategy> 
    		<page-size>1000</page-size> 
    		<eager-load-group>*</eager-load-group> 
    	</read-ahead> 
     
    	<list-cache-max>1000</list-cache-max> 
     
    	<clean-read-ahead-on-load>false</clean-read-ahead-on-load>
     
    	<entity-command name="mssql-fetch-key"/>
    </defaults>
    après il faut dire à XDoclet le répertoire (mergeDir) dans lequel il va trouver ce fameux fichier et hop le fichier jbosscmp-jdbc.xml se fera tout seul.

    le bean entity cmp : ExempleBean.java
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    /**
     * @ejb.bean name="Exemple"
     *                       display-name="Name for Exemple"
     *           type="CMP"
     *           cmp-version="2.x"
     *           reentrant="false"
     *           
     *           view-type="local"
     *           local-jndi-name="ejb/Exemple"
     *           
     *           schema="ExempleSchema"
     *           primkey-field="id"
     *           
     * @ejb.pk class="java.lang.Integer"
     * 
     * @ejb.persistence   table-name = "t_Exemple"
     * 
     * @ejb.home      generate="local" local-class="com.ejb.entity.interfaces.ExempleHome"
     * @ejb.interface generate="local" local-class="com.ejb.entity.interfaces.Exemple"
     * 
     * @ejb.finder  
     *                              signature="Exemple findById(java.lang.Integer id)"
     *                              query="SELECT OBJECT(Exemple) FROM ExempleSchema Exemple WHERE Exemple.id = ?1"
     *                              unchecked="true"
     *                              result-type-mapping="Local"
     * 
     * @ejb.finder  
     *                              signature="Exemple findByName(java.lang.String name)"
     *                              query="SELECT OBJECT(Exemple) FROM ExempleSchema Exemple WHERE Exemple.name = ?1"
     *                              unchecked="true"
     *                              result-type-mapping="Local"
     *                              
     * @ejb.finder  
     *                              signature="java.util.Collection findByFamily(java.lang.String family)"
     *                              query="SELECT OBJECT(Exemple) FROM ExempleSchema Exemple WHERE Exemple.family = ?1"     
     *                              unchecked="true"
     *                              result-type-mapping="Local"
     * 
     * @ejb.finder  
     *                              signature="java.util.Collection findAll()"
     *                              query="SELECT OBJECT(Exemple) FROM ExempleSchema Exemple"
     *                              unchecked="true"
     *                              result-type-mapping="Local"
     *
     * @ejb:util generate="physical"
     * 
     */
    public abstract class ExempleBean implements EntityBean {
     
    	/** The entity context */
    	private EntityContext context;
     
        /**
         * @ejb.create-method
         * @return Primary Key
         * @throws CreateException
         */ 
         public Integer ejbCreate(String name, String family) throws CreateException {
        	 setName(name);
        	 setFamily(family);
        	 return null;
         }
     
         public void ejbPostCreate(String name, String family) throws CreateException {
         }
     
     	/**
            * @ejb.interface-method
            * @ejb.pk-field
            * @ejb.persistence column-name="k_id"
            * @ejb.transaction type="Supports"
            * 
            * @jboss.persistence auto-increment="true" 
            * 
            * @return Aircraft Type ID
            */
     	public abstract Integer getId();
     	public abstract void setId(Integer id);
     
     	/**
            * @ejb.interface-method view-type="local"
            * @ejb.persistence column-name="f_name"
            *
            * @return Aircraft name
            */
     	public abstract String getName();
     	public abstract void setName(String name);
     
     	/**
            * @ejb.interface-method view-type="local"
            * @ejb.persistence column-name="f_family"
            *
            * @return Aircraft family
            */
     	public abstract String getFamily();
     	public abstract void setFamily(String family);	   
     
    	public void setEntityContext(EntityContext ctx)
    		throws EJBException,
    		RemoteException {
    		context=ctx;
    	}
     
    	public void unsetEntityContext() throws EJBException, RemoteException {
    		context=null;
    	}
            //....
    un petit coup de moulinette xdoclet et hop les interfaces & la classe ExempleUtil.

    reste la servlet de test :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    /**
     * Servlet Class
     *
     * @web.servlet              name="Exemple"
     *                           display-name="Name for Exemple"
     *                           
     * @web.servlet-mapping      url-pattern="/Exemple"
     * 
     * @web.ejb-local-ref
     *              name="ejb/Exemple"
     *              type="Entity"
     *              home="com.ejb.entity.interfaces.ExempleHome"
     *              local="com.ejb.entity.interfaces.Exemple"
     * 
     * @jboss.ejb-local-ref ref-name="Exemple"
     *                                          jndi-name="ejb/Exemple"
     *
     */
    public class ExempleServlet extends HttpServlet {
     
    	private ExempleHome home;
     
    	public void init(ServletConfig config) throws ServletException {
    		try {
    			home = ExempleUtil.getLocalHome();
    		} catch (Exception e) {
    			throw new ServletException("Lookup of java:/comp/env/ failed");
    		}
    	}
     
     
    	protected void doGet(HttpServletRequest req, HttpServletResponse resp)
    		throws ServletException,
    		IOException {
    		PrintWriter out = resp.getWriter();
    		resp.setContentType("text/html");
    		try
    		{
    			home.create("homer","simpson");
    		}
    		catch(Exception e)
    		{
    			out.println("Erreur : "+e.getMessage());
    		}
    	}
    	//...
    je me suis aussi fait une jsp de test :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    <?xml version="1.0" encoding="ISO-8859-1" ?>
    <%@ page language="java"
    		 contentType="text/html; charset=ISO-8859-1"
        	 pageEncoding="ISO-8859-1"
        	 import="com.ejb.entity.interfaces.ExempleHome,
        		 	 com.ejb.entity.interfaces.Exemple,
        			 com.ejb.entity.ExempleUtil"
    %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    	<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
    	<title>Exemple List</title>
    </head>
    <body>
    	<table>
    	<tr><th>Name</th><th>Family</th><td colspan="2"><a href="">New</a></td></tr>
    <%
    ExempleHome home = ExempleUtil.getLocalHome();
     
    java.util.Collection listExemple = home.findAll();
    java.util.Iterator it = listExemple.iterator();
    while(it.hasNext())
    {
    	Exemple Exemple = (Exemple) it.next();
    %>
    	<tr>
    		<td><%=Exemple.getName()%></td><td><%=Exemple.getFamily()%></td>
    		<td><a href="?<%=Exemple.getId()%>">Update</a></td>
    		<td><a href="?<%=Exemple.getId()%>">Delete</a></td>
    	</tr>
    <%
    }
    %>
    	</table>
    </body>
    </html>
    N'ayant pas de class non abstraite et avec un constructeur par défaut pour le fameux bean, je n'ai pas pu utiliser <jps:useBean/>. Du coup, je ne sais pas si ma solution est la plus optimale. Je me dis que comme la jsp est transformée par la suite en servlet ça doit aller. Si quelqu'un peut m'éclairer sur ce point je suis tout ouïe !

    voilà, je suis ouvert à tous commentaires sur tout ça, c'est la première fois que je fais des entity beans dans un contexte pro, sooooooo. il doit surement avoir des subtilités que j'ai manqué

    bye

  9. #9
    Nouveau membre du Club
    Inscrit en
    Février 2006
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 48
    Points : 36
    Points
    36
    Par défaut
    Bon y'a quelques différences avec ce que j'ai fait, et ici ça fonctionne:

    Pour les tag XDoclet class-level:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    * @ejb.bean name="ResponsableBean"
     *           display-name="Responsable"
     * 			 schema="Responsable"
     *           description="Responsable EJB"
     *           jndi-name="ejb/ResponsableBeanHome"
     * 			 local-jndi-name ="ejb/ResponsableBeanLocalHome"
     *           type="CMP"
     *           cmp-version="2.x"
     *           view-type="local"
     * 			 primkey-field="numero"
     * 			 transaction-type = "Container"
     * @ejb.persistence table-name="responsables"
     * @jboss.persistence table-name="responsables"
     * 					  create-table="true"
     * 					  remove-table="true"
     * @jboss.unknown-pk class = "java.lang.Integer"
     * 					 column-name = "num_responsable"
     * 					 jdbc-type = "INTEGER"
     * 					 sql-type = "INTEGER"
     * 					 auto-increment = "true"
     * @jboss.entity-command name = "mssql-fetch-key"
     * @ejb.finder 	view-type="local"
     * 				signature="com.plansactions.interfaces.ResponsableBeanLocal findByNumeroSGI(java.lang.String numeroSGI)"
     * 				query="SELECT OBJECT(r) FROM Responsable r WHERE r.numeroSGI = ?1"
     * @ejb.finder 	view-type="local"
     * 				signature="com.plansactions.interfaces.ResponsableBeanLocal findByNomEtPrenom(java.lang.String nom, java.lang.String prenom)"
     * 				query="SELECT OBJECT(r) 
     * 					   FROM Responsable r 
     * 					   WHERE r.nom = ?1 
     * 					   AND r.prenom = ?2"
     * @ejb.util
     * 			 generate="physical"
     */
    public abstract class ResponsableBean implements EntityBean {
    Et pour les method-level:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    /**
             * Renvoie le numero du responsable.
             * 
             * @ejb.persistence column-name = "num_responsable"
             * @ejb.pk-field
             * 
             * @return le numero du responsable.
             */
    	public abstract Integer getNumero();
     
    	/**
             * Positionne le numéro du responsable.
             * 
             * @ejb.transaction type = "Required"
             * 
             * @param numeroResponsable le numero du responsable.
             */
    	public abstract void setNumero(Integer numeroResponsable);
     
    //le reste des setters/getters et gestion des relations CMP
     
    //la methode ejbCreate
       /** @throws CreateException Thrown if method fails due to system-level error.
             * 
             * @throws CreateException
             *
             * @ejb.create-method
             */
    	public Integer ejbCreate(String nom) throws CreateException{
    		this.setNom(nom);
    		return null;
    	}
    Voila.
    Comme je l'ai dit c'est peut-être pas la meilleure solution (@jboss.unknown-pk...) mais elle fonctionne et je n'ai pas le temps de me pencher sur la question. J'aprofondirai tout ça après mon stage.
    Bon j'y retourne
    A+

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mars 2006
    Messages : 38
    Points : 37
    Points
    37
    Par défaut
    salut

    j'ai corrigé le code foireux que j'ai mis hier pour mettre une version qui marche à la place.

    j'espère que ça te rendra service tout ou tard. sait-on de quoi est fait le futur !

    comme je l'ai marqué, si quelqu'un a des commentaires, je n'attends que ça

    bye

Discussions similaires

  1. [Derby] [Débutant] champ auto-incrémenté possible ?
    Par Cassios dans le forum Autres SGBD
    Réponses: 5
    Dernier message: 24/06/2011, 15h43
  2. Connaître la valeur d'un champ auto incrémenté
    Par soltani1 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 18/05/2006, 14h55
  3. champ auto incrémenté
    Par Kerod dans le forum Langage SQL
    Réponses: 6
    Dernier message: 21/09/2005, 17h29
  4. [BCB5][FB 1.5]IBDataSet et champ Auto-incrémenté
    Par Sitting Bull dans le forum Connexion aux bases de données
    Réponses: 4
    Dernier message: 21/07/2004, 15h37
  5. [JDO]Hibernate : Mapping d'un champ auto-incrémenté
    Par brice.antoine dans le forum Hibernate
    Réponses: 4
    Dernier message: 02/04/2004, 10h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo