10
votes

Problèmes de génération de SQL via Eclipselink - Séparateur manquant

Je suis à l'aide de Eclipselink avec jpa. Dans ma persistance.xml, j'ai défini pour générer un fichier Create.SQL. Le fichier sera généré, mais avec ";" - séparateurs de chaque instruction SQL.

est une possibilité de définir un séparateur dans la persistance.xml ou d'une autre manière?

Exemple de persistance .xml: xxx

exemple de fichier SQL généré: xxx


1 commentaires

@editors: merci de détruire la persistance.xml -.-


3 Réponses :


0
votes

Si c'est une éteinte, remplacez chaque "\ n \ n" avec "; \ n \ n". Ne recommanderait pas cela comme une solution permanente si ...


1 commentaires

Les tables ci-dessus ne sont que des exemples. La base de données se développera dans des projets avec de nombreux utilisateurs. Donc, c'est peu pratique pour remplacer les lampes manuellement



3
votes

Le jeton utilisé pour séparer les instructions dépend du contenu de base de données utilisé. Je suppose que vous utilisez Oracle, à partir du code, il semble être le seul qui n'utilise pas un séparateur, bien que je ne sois pas sûr pourquoi.

Quel outil utilisez-vous l'exécution du script? Semble être un bug qui ";" N'EST PAS UTILISÉ POUR Oracle, veuillez enregistrer ce BU dans Eclipselink et voter pour cela. P>

Pour contourner le problème Créez votre propre sous-classe Oracleplatform et remplacer, P>

getStoredProcedureTerminationToken() {
  return ";"
}


3 commentaires

Bonjour, définir la propriété "EclipsElink.Target-Base de données" pour les tests n'a pas aidé. J'utilise PostgreSQL et n'a pas spécifié la propriété "EclipsElink.ink.Target-Baseware". JPA devrait définir cette valeur automatiquement à l'aide des métadonnées que JDBC fournit pour déterminer la base de données cible.


Malheureusement, n'a pas aidé ...


Sauvé ma journée! Ce que vous avez à faire est de créer une sous-classe d'Oracleplatform, définissez la variable protégée StoredProcoDureTerminationToken à ; et utilisez son nom qualifié pour la propriété eclipselink.Target-base de données .



5
votes

J'ai rencontré ce problème et j'ai résolu-le en définissant une propriété en persistance.xml.

Depuis ECLIPSELINK 2.6, il existe une propriété "eclipselink.ddlgen-Terminate-extrémité-instructions" que lorsqu'il est défini sur true, un délimiteur sera annexé à chaque relevé.

Je pense que j'utilisais la base de données H2 à cette époque.

Pour plus de détails, voir http: //www.eclipse.org/eclipselink/api/2.6/org/eclipse/persistence/config/persistenceUnitproperties.html


1 commentaires

Cela ne semble pas fonctionner à Oracle, car Oracleplattform définit un photopédorétermination stocké de ""