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

Wildfly/JBoss Java Discussion :

Pb "could not create entity" JBOSS 3.2.8 Postgres 8.1.5


Sujet :

Wildfly/JBoss Java

  1. #1
    Candidat au Club
    Inscrit en
    Janvier 2007
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 12
    Points : 3
    Points
    3
    Par défaut Pb "could not create entity" JBOSS 3.2.8 Postgres 8.1.5
    Bonjour tout le monde,

    Je suis sur un JBOSS 3.2.8 avec une base postgres 8.1.5

    Je n arrive pas à créer mon EJB entity car j ai une erreur SQL.

    J ai l impression d'avoir tout bien configuré mais j ai tjs cette foutu erreur. J ai bien mis le fichier postgres-ds.xml avec les bons drivers. Jai regardé ds la console XML si mes EJB etaient bien déployés.
    Il faut savoir que lorsque je déplois l'EAR sur une version 3.2.5 avec un postgres 7.4.8 ca marche ...
    J ai l impression qu il me met un '?' au lieu de me mettre un boolean ...

    Voici les traces :


    2007-01-23 12:40:50,331 INFO [com.ejb.DocMgrSessionBean] Identifiant du selector id=1379
    2007-01-23 12:40:50,343 ERROR [org.jboss.ejb.plugins.cmp.jdbc.JDBCCreateEntityCommand.FileReference] Could not create entity
    org.postgresql.util.PSQLException: ERROR: column "completed" is of type boolean but expression is of type character
    at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:1531)
    at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1313)
    ...
    Voici mon EJB-JAR.XML :


    Code xml : 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
    		<entity id="FileReference">
    			<ejb-name>FileReference</ejb-name>
    			<local-home>com.ejb.FileReferenceLocalHome</local-home>
    			<local>com.ejb.FileReferenceLocal</local>
    			<ejb-class>com.ejb.FileReferenceBean</ejb-class>
    			<persistence-type>Container</persistence-type>
    			<prim-key-class>com.ejb.FileReferenceKey</prim-key-class>
    			<reentrant>False</reentrant>
    			<cmp-version>2.x</cmp-version>
    			<abstract-schema-name>FileReference</abstract-schema-name>
    			<cmp-field>
    				<field-name>id</field-name>
    			</cmp-field>
    			<cmp-field>
    				<field-name>filename</field-name>
    			</cmp-field>
    			<cmp-field>
    				<field-name>creation</field-name>
    			</cmp-field>
    			<cmp-field>
    				<field-name>completed</field-name>
    			</cmp-field>
    			<cmp-field>
    				<field-name>dateCompleted</field-name>
    			</cmp-field>
    			<cmp-field>
    				<field-name>downloaded</field-name>
    			</cmp-field>
    			<cmp-field>
    				<field-name>dateDownloaded</field-name>
    			</cmp-field>
    			<cmp-field>
    				<field-name>onDisk</field-name>
    			</cmp-field>
    			<cmp-field>
    				<field-name>fileSize</field-name>
    			</cmp-field>
    			<cmp-field>
    				<field-name>description</field-name>
    			</cmp-field>
    			<ejb-local-ref id="EJBLocalRef_1103637284796">
    				<ejb-ref-name>ejb/Application</ejb-ref-name>
    				<ejb-ref-type>Entity</ejb-ref-type>
    				<local-home>com.ejb.ApplicationLocalHome</local-home>
    				<local>com.ejb.ApplicationLocal</local>
    				<ejb-link>Application</ejb-link>
    			</ejb-local-ref>
    			<query>
    				<description></description>
    				<query-method>
    					<method-name>findAll</method-name>
    					<method-params>
    					</method-params>
    				</query-method>
    				<ejb-ql>select object(o) from FileReference o</ejb-ql>
    			</query>
    		</entity>
    <relationships>
    		<ejb-relation>
    			<description></description>
    			<ejb-relation-name>Application-FileReference</ejb-relation-name>
    			<ejb-relationship-role>
    				<ejb-relationship-role-name>filereference</ejb-relationship-role-name>
    				<multiplicity>One</multiplicity>
    				<relationship-role-source>
    					<ejb-name>Application</ejb-name>
    				</relationship-role-source>
    				<cmr-field>
    					<cmr-field-name>filereference</cmr-field-name>
    					<cmr-field-type>java.util.Collection</cmr-field-type>
    				</cmr-field>
    			</ejb-relationship-role>
    			<ejb-relationship-role>
    				<ejb-relationship-role-name>application</ejb-relationship-role-name>
    				<multiplicity>Many</multiplicity>
    				<relationship-role-source>
    					<ejb-name>FileReference</ejb-name>
    				</relationship-role-source>
    				<cmr-field>
    					<cmr-field-name>application</cmr-field-name>
    				</cmr-field>
    			</ejb-relationship-role>
    		</ejb-relation>
    	</relationships>

    Voici le morceau de code ou ca plante :

    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
    id = findNextID("FileReference");
    			log.info("Identifiant du selector id="+id);
    			FileReferenceKey key = new FileReferenceKey(id);
     
    			try
    			{
    				fileRef = ((FileReferenceLocalHome) ctx.lookup("local/FileReference")).create(id);	
    			}
    			catch(CreateException e)
    			{
    				log.error("CreateException : "+ e.getMessage());
    			}
    			catch(NamingException na)
    			{
    				log.error("NamingException : "+ na.getMessage());
    			}

  2. #2
    Membre actif Avatar de a.snaps
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    209
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 209
    Points : 241
    Points
    241
    Par défaut
    Et tu as bien la propriété completed de type Boolean???

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    public abstract Boolean getCompleted();
     
    public abstract void setCompleted(Boolean completed);
    Alex

  3. #3
    Candidat au Club
    Inscrit en
    Janvier 2007
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 12
    Points : 3
    Points
    3
    Par défaut
    Bonjour Alex,

    J'utilise le type primitif boolean et non l'objet Boolean.
    Tu pense que ca peux poser un pb ?

    Code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    public interface FileReferenceLocal extends javax.ejb.EJBLocalObject
    {
    	public abstract boolean getCompleted();
    	public abstract void setCompleted(boolean newCompleted);
                 ...
    }
    Je dois vous avouer je sèche un peu ...
    Est ce que le pb peut venir des descriptifs de déploiement (ejb-jar.xml, jboss.xml etc ...) ?

    Pour info voici les traces de postgres :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    ERROR:  column "completed" is of type boolean but expression is of type character
    HINT:  You will need to rewrite or cast the expression.
    STATEMENT:  INSERT INTO filereference (id, filename, creation, completed, dateCompleted, downloaded, dateDownloaded, onDisk, fileSize, description, application_name, application_projet_name) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12)
    ERROR:  current transaction is aborted, commands ignored until end of transaction block

  4. #4
    Candidat au Club
    Inscrit en
    Janvier 2007
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 12
    Points : 3
    Points
    3
    Par défaut
    Bonjour,
    Il semblerait que j ai trouvé un début de solution.
    Lorsque je créé ma table en remplacant tous les boolean par text ca marche ... Mais alors pk il ne me prend pas le type primitif boolean ?
    En revanche l'insertion en table est bien "false" ou "true".

    Pb de drivers JDBC?
    Pb postgres ?

    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
     
    CREATE TABLE filereference
    (
      id integer NOT NULL,
      filename text,
      creation timestamp with time zone,
      completed text,
      datecompleted timestamp with time zone,
      downloaded text,
      datedownloaded timestamp with time zone,
      ondisk text,
      filesize double precision NOT NULL,
      description text,
      application_name text,
      application_projet_name text,
      CONSTRAINT pk_filereference PRIMARY KEY (id)
    ) 
    WITHOUT OIDS;
    ALTER TABLE filereference OWNER TO jboss;

  5. #5
    Membre actif Avatar de a.snaps
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    209
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 209
    Points : 241
    Points
    241
    Par défaut
    J'ai vite cherché un peu de mon coté et tu n'es pas le seul à avoir ce problème.
    Il apparaît que cela n'es pas vraiment un bug, mais un "corner case".
    Postgresql se décharge en tout cas, alors qu'un bug est présent dans leur système. J'ai donc commencé à jetter un coup d'oeil sur le source, mais via l'interface en ligne... Or il y pas mal de code à vérifier! Il faudrait que je checkout le code de subversion (pour ta version) et vérifie tout cela avec mon EDI.
    Autant cela m'intéresse (J'utilise souvent JBoss et Postgresql), mais pas JBoss 3, toujours le 4! Et donc n'étant actuellement pas touché directement par le problème, mais ayant une montagne de boulot sur mon bureau... Ne compte pas trop sur mon aide sur ce coup là. Pourtant cela m'aurait éclaté!
    Alex

  6. #6
    Candidat au Club
    Inscrit en
    Janvier 2007
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 12
    Points : 3
    Points
    3
    Par défaut
    Merci Alex pour tes recherches !

    Je vais continuer à chercher et si je trouve une solution je te tiens au courant

    D'après toi quel est le meilleur choix :

    Est ce que tu penses que si je passe en version 4.0.5 de Jboss j aurais le meme pb ?

    Est ce que tu penses que si je passe en version 8.2 de Postgres j aurais le meme pb ?

    Didier

  7. #7
    Membre éclairé Avatar de XmasRock
    Inscrit en
    Janvier 2007
    Messages
    729
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 729
    Points : 821
    Points
    821
    Par défaut
    Il y a un changement entre le mapping des Boolean pour les versions 7 et 8 de PostgreSQL.
    Regardes dans conf/standardjbosscmp-jdbc.xml pour

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <type-mapping>
    <name>PostgreSQL 8.0</name>
    ...
    <mapping>
    <java-type>java.lang.Boolean</java-type>
    <jdbc-type>BOOLEAN</jdbc-type>
    <sql-type>BOOLEAN</sql-type>
    </mapping>
    et pour
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <type-mapping>
    <name>PostgreSQL</name>
    ...
    <mapping>
    <java-type>java.lang.Boolean</java-type>
    <jdbc-type>CHAR</jdbc-type>
    <sql-type>BOOLEAN</sql-type>
    </mapping>
    Verifies que tu utilises le bon mapping dans ton fichier de description.

  8. #8
    Candidat au Club
    Inscrit en
    Janvier 2007
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 12
    Points : 3
    Points
    3
    Par défaut
    Bonjour a tous,
    En effet je n 'avais pas pris le bon mapping. J'utilisais la version 7 au lieu de la version 8.
    Maintenant tout marche nickel !
    Merci XmasRock et Merci a vous tous pour votre aide précieuse

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 20/04/2009, 13h49
  2. [DEBUTANT][AXIS]Could not create the Java virtual machine
    Par nezdeboeuf62 dans le forum Services Web
    Réponses: 4
    Dernier message: 30/05/2007, 14h09
  3. Erreur : "could not create process"
    Par spéculteur dans le forum C++
    Réponses: 3
    Dernier message: 29/03/2005, 11h31

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