J'ai créé un portlet JSR-268 pour Liferay qui utilise des services pour interagir avec une base de données. Je peux déployer le portlet sans problèmes ni erreurs, mais la table définie par les services n'est pas créée! P>
Je n'obtiens pas d'erreur "Table non trouvée" lorsque je teste le portlet. Je n'obtiens pas du tout des erreurs! La table n'est tout simplement pas là dans la base de données. J'ai trouvé d'autres choses sur Internet disant que je devrais utiliser le fichier "Create.SQL" généré que le constructeur de services de perte de vie créé, mais je ne vois pas ce fichier n'importe où. P>
Quelqu'un peut-il m'aider? P>
4 Réponses :
Les tables n'ont-elles jamais été créées? J'ai eu un problème similaire quand j'ai supprimé les tables à la main. Je pensais qu'ils seraient créés à nouveau lors du déploiement du portlet, mais cela ne s'est pas produit. P>
Après avoir étudié le code source, j'ai découvert que Liferay stocke des informations sur les portlets de la table Seulement alors les tables Un moyen facile d'atteindre cela, est de supprimer toutes les entrées dans Servicecomonent Code> et vérifie 2 choses avant qu'il n'exécute le (pseudo) SQL dans
méta-inf / tables .SQL code>: p>
build.number code> dans
service.properties code> doit être supérieur à celui-ci, stocké dans
Servicecomonent code>, LI>
tables.sql code> doit être différent de celui stocké dans
Servicecomonent code>. Li>
ol>
Servicecomonent Code> Adressant à votre portlet. p>
Vous devez également la supprimer à partir de la liste de la table, puis le redéployer.
Essayez en supprimant une entrée de la table ServiceComponent. Et redéployer votre portlet.
delete FROM servicecomponent where buildNamespace="<your table namespace>"
Si vous utilisez ServiceBuilder à Liferay 6.2 Lorsque vous définissez une nouvelle entité dans le schéma de perte de vie dans Service.xml, la première fois que tout portlet tente d'accéder à la table qu'elle sera créée s'il n'existe pas. P >
Il y a plusieurs problèmes lorsque vous utilisez un schéma différent, car parfois la vie ne crée pas de tables automatiquement. Ensuite, vous devez laurécher la phrase SQL Creation et la créer manuellement, puis l'accéder à LocalserviceUtil. P>
J'ai fait face au même problème et ci-dessous une solution donnée ALORS