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

JPA Java Discussion :

[EJB3] Toplink ne veut pas déployer les tables


Sujet :

JPA Java

  1. #1
    Membre actif
    Profil pro
    Étudiant
    Inscrit en
    Août 2004
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2004
    Messages : 80
    Par défaut [EJB3] Toplink ne veut pas déployer les tables
    Bonjour,

    J'essaye de faire marcher un petit projet EJB3 sur un serveur glassfish v2 en utilisant toplink pour le persistance.

    J'utilise une base PostgreSQL.

    Voici le persistance.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
    <?xml version="1.0"?>
     
    <persistence xmlns="http://java.sun.com/xml/ns/persistence"
    	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    	xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
        http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"
    	version="1.0">
    	<persistence-unit name="reviewSession" transaction-type="JTA">
        	<jta-data-source>jdbc/__default</jta-data-source>
    		<properties>
    			<property name="toplink.ddl-generation" value="drop-and-create-tables"/>
    			<property name="toplink.logging.level" value="INFO" />
    		</properties>
    	</persistence-unit>
    </persistence>
    Le problème que j'ai est qu'il ne crée pas les tables malgré le paramètre "drop-and-create-tables" et donc, dès qu'il essaye d'y accéder, j'obtiens que la relation n'existe pas:

    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
    [#|2009-07-15T12:16:23.495+0200|SEVERE|sun-appserver2.1|javax.enterprise.system.container.web|_ThreadID=14;_ThreadName=httpSSLWorkerThread-8080-0;_RequestID=3eabc4fc-55e6-4137-9acb-ae9c0828cbce;|StandardWrapperValve[jsp]: PWC1406: Servlet.service() for servlet jsp threw exception
    javax.ejb.EJBException
    	at com.sun.ejb.containers.BaseContainer.processSystemException(BaseContainer.java:3894)
    	at com.sun.ejb.containers.BaseContainer.completeNewTx(BaseContainer.java:3794)
    	at com.sun.ejb.containers.BaseContainer.postInvokeTx(BaseContainer.java:3596)
    	at com.sun.ejb.containers.BaseContainer.postInvoke(BaseContainer.java:1379)
    	at com.sun.ejb.containers.BaseContainer.postInvoke(BaseContainer.java:1316)
    	at com.sun.ejb.containers.EJBLocalObjectInvocationHandler.invoke(EJBLocalObjectInvocationHandler.java:205)
    	at com.sun.ejb.containers.EJBLocalObjectInvocationHandlerDelegate.invoke(EJBLocalObjectInvocationHandlerDelegate.java:127)
    	at $Proxy35.newArtist(Unknown Source)
    	at org.apache.jsp.createArtist_005fservice_jsp._jspService(createArtist_005fservice_jsp.java from :134)
    	at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:109)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:847)
    	at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:389)
    	at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:486)
    	at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:380)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:847)
    	at org.apache.catalina.core.ApplicationFilterChain.servletService(ApplicationFilterChain.java:427)
    	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:315)
    	at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:287)
    	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:218)
    	at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:648)
    	at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:593)
    	at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:94)
    	at com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:98)
    	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:222)
    	at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:648)
    	at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:593)
    	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:587)
    	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:1096)
    	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:166)
    	at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:648)
    	at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:593)
    	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:587)
    	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:1096)
    	at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:288)
    	at com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.invokeAdapter(DefaultProcessorTask.java:647)
    	at com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.doProcess(DefaultProcessorTask.java:579)
    	at com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.process(DefaultProcessorTask.java:831)
    	at com.sun.enterprise.web.connector.grizzly.DefaultReadTask.executeProcessorTask(DefaultReadTask.java:341)
    	at com.sun.enterprise.web.connector.grizzly.DefaultReadTask.doTask(DefaultReadTask.java:263)
    	at com.sun.enterprise.web.connector.grizzly.DefaultReadTask.doTask(DefaultReadTask.java:214)
    	at com.sun.enterprise.web.portunif.PortUnificationPipeline$PUTask.doTask(PortUnificationPipeline.java:380)
    	at com.sun.enterprise.web.connector.grizzly.TaskBase.run(TaskBase.java:265)
    	at com.sun.enterprise.web.connector.grizzly.ssl.SSLWorkerThread.run(SSLWorkerThread.java:106)
    Caused by: Exception [TOPLINK-4002] (Oracle TopLink Essentials - 2.1 (Build b60e-fcs (12/23/2008))): oracle.toplink.essentials.exceptions.DatabaseException
    Internal Exception: org.postgresql.util.PSQLException: ERROR: relation "person" does not exist
    Error Code: 0
    Call: SELECT t0.NAME, t0.DTYPE, t1.NAME FROM PERSON t0, ARTIST t1 WHERE ((t0.NAME = ?) AND ((t1.NAME = t0.NAME) AND (t0.DTYPE = ?)))
    	bind => [test, Artist]
    Query: ReadObjectQuery(examples.ejb.ejb30.domain.Artist)
    	at oracle.toplink.essentials.exceptions.DatabaseException.sqlException(DatabaseException.java:319)
    	at oracle.toplink.essentials.internal.databaseaccess.DatabaseAccessor.basicExecuteCall(DatabaseAccessor.java:566)
    	at oracle.toplink.essentials.internal.databaseaccess.DatabaseAccessor.executeCall(DatabaseAccessor.java:452)
    	at oracle.toplink.essentials.threetier.ServerSession.executeCall(ServerSession.java:473)
    	at oracle.toplink.essentials.internal.queryframework.DatasourceCallQueryMechanism.executeCall(DatasourceCallQueryMechanism.java:228)
    	at oracle.toplink.essentials.internal.queryframework.DatasourceCallQueryMechanism.executeCall(DatasourceCallQueryMechanism.java:214)
    	at oracle.toplink.essentials.internal.queryframework.DatasourceCallQueryMechanism.selectOneRow(DatasourceCallQueryMechanism.java:635)
    	at oracle.toplink.essentials.internal.queryframework.ExpressionQueryMechanism.selectOneRowFromTable(ExpressionQueryMechanism.java:2453)
    	at oracle.toplink.essentials.internal.queryframework.ExpressionQueryMechanism.selectOneRow(ExpressionQueryMechanism.java:2428)
    	at oracle.toplink.essentials.queryframework.ReadObjectQuery.executeObjectLevelReadQuery(ReadObjectQuery.java:365)
    	at oracle.toplink.essentials.queryframework.ObjectLevelReadQuery.executeDatabaseQuery(ObjectLevelReadQuery.java:724)
    	at oracle.toplink.essentials.queryframework.DatabaseQuery.execute(DatabaseQuery.java:628)
    	at oracle.toplink.essentials.queryframework.ObjectLevelReadQuery.execute(ObjectLevelReadQuery.java:692)
    	at oracle.toplink.essentials.queryframework.ObjectLevelReadQuery.executeInUnitOfWork(ObjectLevelReadQuery.java:746)
    	at oracle.toplink.essentials.internal.sessions.UnitOfWorkImpl.internalExecuteQuery(UnitOfWorkImpl.java:2248)
    	at oracle.toplink.essentials.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:952)
    	at oracle.toplink.essentials.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:909)
    	at oracle.toplink.essentials.internal.ejb.cmp3.base.EntityManagerImpl.findInternal(EntityManagerImpl.java:354)
    	at oracle.toplink.essentials.internal.ejb.cmp3.base.EntityManagerImpl.findInternal(EntityManagerImpl.java:330)
    	at oracle.toplink.essentials.internal.ejb.cmp3.EntityManagerImpl.find(EntityManagerImpl.java:148)
    	at com.sun.enterprise.util.EntityManagerWrapper.find(EntityManagerWrapper.java:546)
    	at examples.ejb.ejb30.service.ReviewServiceBean.getPerson(ReviewServiceBean.java:45)
    	at examples.ejb.ejb30.service.ReviewServiceBean.newArtist(ReviewServiceBean.java:62)
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    	at java.lang.reflect.Method.invoke(Unknown Source)
    	at com.sun.enterprise.security.application.EJBSecurityManager.runMethod(EJBSecurityManager.java:1011)
    	at com.sun.enterprise.security.SecurityUtil.invoke(SecurityUtil.java:175)
    	at com.sun.ejb.containers.BaseContainer.invokeTargetBeanMethod(BaseContainer.java:2920)
    	at com.sun.ejb.containers.BaseContainer.intercept(BaseContainer.java:4011)
    	at com.sun.ejb.containers.EJBLocalObjectInvocationHandler.invoke(EJBLocalObjectInvocationHandler.java:197)
    	... 37 more
    Caused by: org.postgresql.util.PSQLException: ERROR: relation "person" does not exist
    	at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:1608)
    	at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1343)
    	at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:194)
    	at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:451)
    	at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:350)
    	at org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc2Statement.java:254)
    	at oracle.toplink.essentials.internal.databaseaccess.DatabaseAccessor.executeSelect(DatabaseAccessor.java:726)
    	at oracle.toplink.essentials.internal.databaseaccess.DatabaseAccessor.basicExecuteCall(DatabaseAccessor.java:501)
    	... 67 more
    |#]
    Pourquoi ne déploie-t-il pas les tableq?

  2. #2
    Membre éclairé
    Inscrit en
    Mars 2008
    Messages
    254
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mars 2008
    Messages : 254
    Par défaut
    Bonjour,

    dans ton fichier persistance.xml, essayer avec ça ,

    tu change la ligne :

    <property name="toplink.ddl-generation" value="drop-and-create-tables"/>

    par


    <property name="toplink.ddl-generation" value="create-tables"/>

  3. #3
    Membre actif
    Profil pro
    Étudiant
    Inscrit en
    Août 2004
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2004
    Messages : 80
    Par défaut
    J'ai déjà essayé mais pas de changements

  4. #4
    Membre éclairé
    Inscrit en
    Mars 2008
    Messages
    254
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mars 2008
    Messages : 254
    Par défaut
    je sais bien que je vais une question bette,

    mais je me demande si tu as ajouter @Entity dans la table en question?

  5. #5
    Membre actif
    Profil pro
    Étudiant
    Inscrit en
    Août 2004
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2004
    Messages : 80
    Par défaut
    Citation Envoyé par Sun03 Voir le message
    je sais bien que je vais une question bette,

    mais je me demande si tu as ajouter @Entity dans la table en question?
    Naturellement.

    Ce qui est étrange c'est qu'il ne semble pas tenir compte de ce que je met dans mon persistance.xml:

    J'ai essayé de remplacer le jta-data-source par des propriétés "toplink.jdbc" mais il continue malgré tout à utiliser le datasource par défaut.

  6. #6
    Membre Expert

    Homme Profil pro
    SDE
    Inscrit en
    Août 2007
    Messages
    2 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : SDE

    Informations forums :
    Inscription : Août 2007
    Messages : 2 013
    Par défaut
    Salut,

    ça n'a pas l'air d'un problème de déploiement.

    Ce qui attire mon oeil c'est cette ligne

    Internal Exception: org.postgresql.util.PSQLException: ERROR: relation "person" does not exist
    Error Code: 0
    Call: SELECT t0.NAME, t0.DTYPE, t1.NAME FROM PERSON t0, ARTIST t1 WHERE ((t0.NAME = ?) AND ((t1.NAME = t0.NAME) AND (t0.DTYPE = ?)))
    bind => [test, Artist]
    Ca t'aide peut-être ?

Discussions similaires

  1. [FMOD Ex] Ne veut pas lire les sons :(
    Par Bakura dans le forum FMOD
    Réponses: 16
    Dernier message: 01/04/2011, 14h41
  2. [FormailPlus] Ne veut pas envoyer les e-mails
    Par bionicleman dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 4
    Dernier message: 02/05/2007, 18h58
  3. Réponses: 10
    Dernier message: 13/03/2007, 12h38
  4. Réponses: 1
    Dernier message: 14/09/2006, 15h23
  5. [MySQL] Mon livre d'or ne veut pas enregistrer les messages
    Par Invité dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 15/03/2006, 17h28

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