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 :

Question sur le nommage des champs. [EJB2.1 Entity]


Sujet :

Java EE

  1. #1
    Membre régulier
    Inscrit en
    Mars 2005
    Messages
    196
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 196
    Points : 99
    Points
    99
    Par défaut Question sur le nommage des champs.
    Bonjour,


    je cherche à réaliser 2 beans entité dans un jar. Jusque la rien de compliqué !
    j'ai donc créé mais 2 beans, et mis en place mes ficheirs .xml.

    mon soucis et qu'à la compilation, j'ai une erreur du type :
    "Column maColone already defined in the table maTable".

    en effet, dans mes 2 beans, j'ai une variable (un champ donc) qui porte le même nom !
    cela pose t'il vraiment problème?



    merci d'avance pour vos retours.

  2. #2
    Membre régulier
    Inscrit en
    Mars 2005
    Messages
    196
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 196
    Points : 99
    Points
    99
    Par défaut
    la solution la plus simple serait bien sure de changer l'un des 2 noms de mes champs !

    mais je préfère comprendre pourquoi 2 champs chacun sur une table différente me causeraient un souci juste parce-qui ont le même nom ...

    je me suis penché du coté des relations entre Ejb, mais rien de bien fructueux n'est ressorti

    Edit : je précise bien que les ejb compilé séparément fonctionnent (en passant l'un ou l'autre en commentaire).

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    156
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 156
    Points : 191
    Points
    191
    Par défaut
    Ton erreur me parait improbable.
    Tes 2 beans doivent être mappés dans 2 tables differentes donc il n'y aucune raison d'avoir cette erreur.
    N'aurais tu pas accidentellement explicitement fait pointer tes 2 entités vers la même table, dans tes annotations ?

  4. #4
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    Je pense que le plus rapide serait de nous montrer le code de tes 2 entity

    A+
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre régulier
    Inscrit en
    Mars 2005
    Messages
    196
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 196
    Points : 99
    Points
    99
    Par défaut
    pourtant il me semble que d'inscrire : <jdbc-table-name>MaTable</jdbc-table-name>
    permet de dire que la table n'est pas la même. Enfin je ne suis pas encore parfaitement au point sur les .xml j'ai donc peut être fait une erreur.

    Mon ejb-jar :
    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
    		<entity>
    			<ejb-name>UserCMP2</ejb-name>
    			<local-home>org.user.UserLocalHome</local-home>
    			<local>org.user.UserLocal</local>
    			<ejb-class>org.user.User</ejb-class>
    			<persistence-type>Container</persistence-type>
    			<prim-key-class>java.lang.String</prim-key-class>
    			<reentrant>False</reentrant>
    			<abstract-schema-name>Cmp2</abstract-schema-name>
    			<cmp-field><field-name>idUser</field-name></cmp-field>
    			<cmp-field><field-name>version</field-name></cmp-field>
    			<primkey-field>idUser</primkey-field>
    		</entity>
     
    		<entity>
    			<ejb-name>ServerCMP2</ejb-name>
    			<local-home>org.server.ServerLocalHome</local-home>
    			<local>org.serve.ServerLocal</local>
    			<ejb-class>org.server.Server</ejb-class>
    			<persistence-type>Container</persistence-type>
    			<prim-key-class>java.lang.String</prim-key-class>
    			<reentrant>False</reentrant>
    			<abstract-schema-name>Cmp2</abstract-schema-name>
    			<cmp-field><field-name>idServer</field-name></cmp-field>
    			<cmp-field><field-name>version</field-name></cmp-field>
    			<primkey-field>version</primkey-field>
    		</entity>
    mon jonas-ejb-jar
    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
    	<jonas-entity>
    		<ejb-name>UserCMP2</ejb-name>
    		<jndi-name>ejb/org/UserLocalHome</jndi-name>
    		<passivation-timeout>120</passivation-timeout>
    		<jdbc-mapping>
                <jndi-name>conMySQL_CRM</jndi-name>
                <jdbc-table-name>users</jdbc-table-name>
                <cmp-field-jdbc-mapping>
                    <field-name>idUser</field-name>
                    <jdbc-field-name>idUser</jdbc-field-name>
                </cmp-field-jdbc-mapping>
                <cmp-field-jdbc-mapping>
                    <field-name>version</field-name>
                    <jdbc-field-name>version</jdbc-field-name>
                </cmp-field-jdbc-mapping>
            </jdbc-mapping>
    	</jonas-entity>
     
    	<jonas-entity>
    		<ejb-name>ServerCMP2</ejb-name>
    		<jndi-name>ejb/org/ServerLocalHome</jndi-name>
    		<jdbc-mapping>
                <jndi-name>conMySQL_CRM</jndi-name>
                <jdbc-table-name>servers</jdbc-table-name>
                <cmp-field-jdbc-mapping>
                    <field-name>idServer</field-name>
                    <jdbc-field-name>idServer</jdbc-field-name>
                </cmp-field-jdbc-mapping>
    			<cmp-field-jdbc-mapping>
                    <field-name>version</field-name>
                    <jdbc-field-name>version</jdbc-field-name>
                </cmp-field-jdbc-mapping>
            </jdbc-mapping>
    	</jonas-entity>
    Edit :
    Citation Envoyé par phantomass Voir le message
    Ton erreur me parait improbable.
    Tes 2 beans doivent être mappés dans 2 tables differentes donc il n'y aucune raison d'avoir cette erreur.
    N'aurais tu pas accidentellement explicitement fait pointer tes 2 entités vers la même table, dans tes annotations ?
    j'utilise les ejb 2.1 le n'ai donc pas d'annotations.

  6. #6
    Membre régulier
    Inscrit en
    Mars 2005
    Messages
    196
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 196
    Points : 99
    Points
    99
    Par défaut
    je ne trouve vraiment pas.

    voila mon code pour l'ejb userCMP2 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    package org.user;
    import javax.ejb.EJBLocalObject;
    import javax.ejb.CreateException;
    import javax.ejb.FinderException;
    import javax.ejb.EJBLocalHome;
     
    public interface UserLocalHome extends javax.ejb.EJBLocalHome {
    	public UserLocal create(String idUser, String version) 
    			throws CreateException;
    	public UserLocal findByPrimaryKey(String idUser) 
    			throws FinderException;
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    package org.user;
    import javax.ejb.EJBLocalObject;
     
    public interface UserLocal extends EJBLocalObject {
    	public String getIdUser();
    	public void setIdUser(String idUser);
    	public String getVersion();
    	public void setVersion(String version);
    }
    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
    package org.user;
    import javax.ejb.CreateException;
    import javax.ejb.EntityBean;
    import javax.ejb.EntityContext;
    import javax.ejb.RemoveException;
     
    abstract public class User implements EntityBean {
    	EntityContext entityContext;
     
    	public String ejbCreate(String idUser, String version) throws CreateException {
    		setIdUser(idUser);
    		setVersion(version);
    		return null;
    	}
     
    	public abstract String getIdUser();
    	public abstract void setIdUser(String idUser);
     
    	public abstract String getVersion();
    	public abstract void setVersion(String version);
     
    	public void ejbLoad() {}
    	public void ejbStore() {}
    	public void ejbActivate() {}
    	public void ejbPassivate() {}
    	public void ejbRemove() throws RemoveException {}
    	public void ejbPostCreate(String idUser, String version) throws CreateException {}
    	public void unsetEntityContext() {
    		this.entityContext = null;}
    	public void setEntityContext(EntityContext entityContext) {
    		this.entityContext = entityContext;}
    }

    De même mon ejb serverCMP2 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    package org.server;
    import javax.ejb.EJBLocalObject;
    import javax.ejb.CreateException;
    import javax.ejb.FinderException;
    import javax.ejb.EJBLocalHome;
     
    public interface ServerLocalHome extends javax.ejb.EJBLocalHome {
    	public ServerLocal create(String idServer, String version) 
    				throws CreateException;
    	public ServerLocal findByPrimaryKey(String version) 
    				throws FinderException;
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    package org.server;
    import javax.ejb.EJBLocalObject;
     
    public interface ServerLocal extends EJBLocalObject {
    	public String getIdServer();
    	public void setIdServer(String idServer);
    	public String getVersion();
    	public void setVersion(String version);
    }
    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
    package org.server;
    import javax.ejb.CreateException;
    import javax.ejb.EntityBean;
    import javax.ejb.EntityContext;
    import javax.ejb.RemoveException;
     
    abstract public class Server implements EntityBean {
    	EntityContext entityContext;
     
    	public String ejbCreate(String idServer, String version) throws CreateException {
    		setIdServer(idServer);
    		setVersion(version);
    		return null;
    	}
     
    	public abstract String getIdServer();
    	public abstract void setIdServer(String idServer);
    	public abstract String getVersion();
    	public abstract void setVersion(String version);
     
    	public void ejbLoad() {}
    	public void ejbStore() {}
    	public void ejbActivate() {}
    	public void ejbPassivate() {}
    	public void ejbRemove() throws RemoveException {}
    	public void ejbPostCreate(String idServer, String version) throws CreateException {}
     
    	public void unsetEntityContext() {
    		this.entityContext = null;}
    	public void setEntityContext(EntityContext entityContext) {
    		this.entityContext = entityContext;}
    }

  7. #7
    Membre régulier
    Inscrit en
    Mars 2005
    Messages
    196
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 196
    Points : 99
    Points
    99
    Par défaut
    mon problème doit effectivement venir de mon code (de l'ejb user). j'ai supprimé mon ejb serveur. La compilation et le déploiement fonctionnent. Par contre j'ai une erreur quand je fais un create :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    fail to create bean : 
    com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: Unknow column 'version' in 'field list'.
    ...
    Edit : en effet, si je supprime l'ejb user et que je compile seulement avec l'ejb server, cela marche. Mon problème vient donc bien de mon ejb User.

  8. #8
    Membre régulier
    Inscrit en
    Mars 2005
    Messages
    196
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 196
    Points : 99
    Points
    99
    Par défaut
    le problème doit être non pas un soucis de champs mes de nombres de champs. J'ai modifié le nom d'un des 2 champs, pour tenter de compiler mais l'erreur suivante est levé :

    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
     [genic] GenIC for JOnAS 4.9.1: 'User', 'Server', generation ...
     [genic] 2008-06-03 15:58:59,749 : JormCompiler.generateFiles : Error during the generation of the class jorm.Cmp2
     [genic] java.lang.IllegalArgumentException: too many names: [org.objectweb.jorm.metainfo.lib.BasicNameDef@33788d, org.objectweb.jorm.metainfo.lib.BasicNameDef@12fb0af]
     [genic]     at org.objectweb.jorm.generator.lib.StateGenerator.name(StateGenerator.java:184)
     [genic]     at org.objectweb.jorm.generator.lib.StateGenerator.getPNameColumns(StateGenerator.java:198)
     [genic]     at org.objectweb.jorm.generator.lib.StateGenerator.<init>(StateGenerator.java:131)
     [genic]     at org.objectweb.jorm.generator.lib.StateGenerator.generate(StateGenerator.java:75)
     [genic]     at org.objectweb.jorm.generator.lib.JormGenerator.generate(JormGenerator.java:370)
     [genic]     at org.objectweb.jorm.compiler.lib.JormCompiler.generateFiles(JormCompiler.java:297)
     [genic]     at org.objectweb.jonas_ejb.genic.BeanSources.generate(BeanSources.java:424)
     [genic]     at org.objectweb.jonas_ejb.genic.GenIC.<init>(GenIC.java:712)
     [genic]     at org.objectweb.jonas_ejb.genic.GenIC.main(GenIC.java:408)
     [genic]     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
     [genic]     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
     [genic]     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
     [genic]     at java.lang.reflect.Method.invoke(Method.java:597)
     [genic]     at org.objectweb.jonas.server.Bootstrap.main(Bootstrap.java:97)
     [genic] GenIC fatal error:
     [genic] Problem during jorm generation (Error during the generation of the class jorm.Cmp2)
     [genic] Error during the generation of the class jorm.Cmp2
     [genic] java.lang.IllegalArgumentException: too many names: [org.objectweb.jorm.metainfo.lib.BasicNameDef@33788d, org.objectweb.jorm.metainfo.lib.BasicNameDef@12fb0af]
     [genic]     at org.objectweb.jorm.generator.lib.StateGenerator.name(StateGenerator.java:184)
     [genic]     at org.objectweb.jorm.generator.lib.StateGenerator.getPNameColumns(StateGenerator.java:198)
     [genic]     at org.objectweb.jorm.generator.lib.StateGenerator.<init>(StateGenerator.java:131)
     [genic]     at org.objectweb.jorm.generator.lib.StateGenerator.generate(StateGenerator.java:75)
     [genic]     at org.objectweb.jorm.generator.lib.JormGenerator.generate(JormGenerator.java:370)
     [genic]     at org.objectweb.jorm.compiler.lib.JormCompiler.generateFiles(JormCompiler.java:297)
     [genic]     at org.objectweb.jonas_ejb.genic.BeanSources.generate(BeanSources.java:424)
     [genic]     at org.objectweb.jonas_ejb.genic.GenIC.<init>(GenIC.java:712)
     [genic]     at org.objectweb.jonas_ejb.genic.GenIC.main(GenIC.java:408)
     [genic]     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
     [genic]     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
     [genic]     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
     [genic]     at java.lang.reflect.Method.invoke(Method.java:597)
     [genic]     at org.objectweb.jonas.server.Bootstrap.main(Bootstrap.java:97)
     [genic] Exception during execution of org.objectweb.jonas_ejb.genic.GenIC : Problem during jorm generation (Error during the generation of the class jorm.Cmp2)
     [genic] java.lang.RuntimeException: Problem during jorm generation (Error during the generation of the class jorm.Cmp2)
     [genic]     at org.objectweb.jonas_ejb.genic.GenIC.fatalError(GenIC.java:1258)
     [genic]     at org.objectweb.jonas_ejb.genic.GenIC.main(GenIC.java:451)
     [genic]     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
     [genic]     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
     [genic]     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
     [genic]     at java.lang.reflect.Method.invoke(Method.java:597)
     [genic]     at org.objectweb.jonas.server.Bootstrap.main(Bootstrap.java:97)

  9. #9
    Membre régulier
    Inscrit en
    Mars 2005
    Messages
    196
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 196
    Points : 99
    Points
    99
    Par défaut
    bon voila ... le mec totalement blasé qui vient de trouver son problème ... <abstract-schema-name>Cmp2</abstract-schema-name> ça c'est faut (c'est le mal bouuu ...)

    <abstract-schema-name>nomDeMonInterfaceLocal</abstract-schema-name> voila ça c'est mieux.

    cqfd

    merci pour vos retours !!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Question sur les ascenseurs des champs
    Par 42remi42 dans le forum WinDev
    Réponses: 6
    Dernier message: 22/02/2018, 08h44
  2. question sur nommage des champs
    Par altair8080 dans le forum Modélisation
    Réponses: 9
    Dernier message: 23/11/2011, 11h08
  3. question sur le comportement des threads
    Par rose-bonbon dans le forum CORBA
    Réponses: 4
    Dernier message: 27/10/2004, 18h00
  4. question sur le format des images ..
    Par vbcasimir dans le forum Langages de programmation
    Réponses: 7
    Dernier message: 28/08/2003, 12h08

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