web-dev-qa-db-fra.com

JPA ne peut pas résoudre la colonne/IntelliJ

J'essaie de mapper certaines classes Java à l'aide de l'implémentation Hibernate JPA. Mon problème est que je ne peux pas utiliser de chaînes codées en dur, ni de noms de colonne. Vous pouvez voir le message d'erreur que je reçois dans l'image ci-dessous.

enter image description here

J'utilise OpenJPA comme fournisseur JPA par défaut et j'ai déjà essayé de le modifier.

IntelliJ version 14.0.3

cordialement,

22
pichlbaer

Vous devez associer votre source de données (créez d'abord une source de données dans la vue de base de données, c'est-à-dire votre véritable connexion à une base de données JDBC) à une unité de persistance ou à une fabrique de session (hibernate.cfg.xml).

Suivez les étapes ci-dessous et les avertissements disparaîtront:

  1. Ouvrez la fenêtre de l'outil Persistence (Affichage | Fenêtres d'outils | Persistance). 
  2. Cliquez avec le bouton droit de la souris sur le module nécessaire, l'unité de persistance ou la fabrique de sessions , Puis sélectionnez Affecter les sources de données dans le menu contextuel.
  3. Dans la boîte de dialogue Affecter les sources de données qui s'ouvre, cliquez sur le champ Source de données Et sélectionnez la source de données nécessaire. (Pour supprimer l'association Avec la source de données, sélectionnez.)

Voir ici: Association de sources de données à des fabriques de session et des unités de persistance

68
panos

J'ai trouvé la réponse de Panos utile, mais je n'ai vu personne mentionner l'ajout de la base de données en tant que source de données. C'est peut-être assez routinier pour être supposé, mais sinon, voici ce que je devais faire:

Sélectionnez Voir/Outil Windows/Base de données

La fenêtre Base de données apparaît généralement en haut à droite.

Dans la fenêtre Base de données, cliquez sur le signe vert + et sélectionnez Source de données/MySQL (ou le type de source de données que vous utilisez).

La fenêtre Sources de données et pilotes apparaît.

Si votre base de données n'y figure pas, utilisez le formulaire vide pour ajouter le texte suivant:

  • Hôte: habituellement localhost, mais si votre base de données de test réside sur une autre machine, insérez cette adresse.
  • Nom d'utilisateur: pour votre utilisation de la base de données. 

  • Mot de passe: pour le mot de passe de l'utilisateur de votre base de données.

IDEA pourrait avoir besoin de quelques manipulations pour trouver le pilote JDBC. On m'a dit qu'en théorie, il aurait dû trouver cela dans le processus de construction Maven du projet sur lequel je travaillais, mais ce n'est pas le cas. J'ai rouvert Voir/Outil Windows/Base de données et j'ai jeté un œil à mon entrée MySQL. En bas, il y avait un message d'erreur à côté de Driver: , et aussi un MySQL link. J'ai cliqué sur le lien MySQL link et IDEA a ouvert une fenêtre contextuelle pour aller chercher Connector/J.

Malgré le fait que les cases à cocher Auto commit et Synchronisation automatique soient cochées et que je les ai laissées de cette façon, IDEA semblait avoir besoin d'un Nudge. Ou peut-être que ça prenait juste un moment et que j'étais impatient. 

Quoi qu'il en soit, j'ai d'abord double-cliqué sur la ligne correspondant à ma base de données dans Base de données . Cela semblait suffire, mais je ne savais pas qu'il me fallait Persistance pour le moment, et tout en réglant ce problème, à la suggestion d'un collègue, j'ai aussi cliqué sur le bouton Synchroniser (deux flèches dans un cercle) sur Base de données .

Vous pouvez également cliquer avec le bouton droit sur votre base de données dans Base de données et sélectionner Synchroniser .

Cela peut prendre quelques secondes, mais vous devriez voir IDEA remplir le schéma de base de données sous l'entrée dans Base de données.

Enfin, j'ai trouvé la réponse de Panos et fixé Persistence .

Sélectionnez Affichage/Fenêtres d'outils/Persistance

La fenêtre Persistence apparaît généralement en haut à gauche.

Dans la fenêtre Persistence, cliquez avec le bouton droit de la souris sur votre projet et sélectionnez Attribuer des sources de données .

IDEA ouvre une boîte de dialogue avec deux colonnes, votre projet dans la colonne de gauche et dans mon cas, une cellule vide dans la colonne de droite. Cliquez sur la cellule vide et IDEA devrait vous donner un menu déroulant vous permettant de sélectionner la base de données que vous venez d'ajouter.

Là encore, cela peut prendre quelques secondes à IDEA pour achever l’analyse de la source de données et refaire toutes les inspections.

9
Steven J Owens

Si vous utilisez JPA, il est également important de configurer le dialecte SQL en tant que HSQLDB au lieu de MySQL. Ceci est souvent déroutant car on a l'impression que MySQL est le bon dialecte, mais en réalité, vous avez affaire à l'hibernation, c'est HSQL.

Si vous venez de mettre à niveau IntelliJ 2017.13 ou d'autres dérivés de cette version (par exemple, Webstorm), ou si vous venez de réimporter votre projet, cela pourrait gâcher l'injection de langue et vous devez le corriger manuellement.

Ceci peut être accompli via le projet 

Paramètres -> Langues et cadres

une partie de l'IDE.

0
Manabu Tokunaga

En réalité, ce n'est pas une erreur qui empêche la compilation de votre code. Votre correcteur orthographique est probablement activé et vous donne la faute de frappe. Si vous pouvez compiler votre code, vous pouvez ignorer ce type de scénario. 

Voyez-vous, aucun autre texte tel que @Column, @GeneratedValue, etc. ne génère d'erreur, ce qui signifie que les fichiers JAR utilisant ce type de contenu figurent dans votre chemin de génération. Donc, je pense que vous pouvez ignorer ce type d'erreur. 

0
Mehmood Arbaz